Tukar bilangan maksimum sambungan TCP dan had UDP dalam sistem Linux
Prasyarat: Mempunyai kebenaran Root
Konfigurasi lalai sistem adalah mencukupi untuk kegunaan harian, dan apabila melakukan pengaturcaraan rangkaian serentak luas, jika bilangan sambungan melebihi, ralat akan dilaporkan apabila bilangan maksimum fail terbuka melebihi, dan sambungan baharu tidak boleh dicipta (jumlah maksimum proses melebihi ralat peruntukan sumber
1 Ubah suai peranan ulimit dalam mengehadkan bilangan maksimum proses pengguna dan bilangan fail maksimum
ulimit: Paparkan (atau tetapkan) had (had) sumber yang boleh digunakan pengguna dalam ruang Linux sistem pengendalian Linux Cina Had ini dibahagikan kepada had lembut (had semasa) dan had keras (had atas), di mana had keras ialah had atas had lembut, sumber sistem yang digunakan oleh aplikasi semasa operasi tidak melebihi had lembut yang sepadan, dan sebarang pengejaran akan menyebabkan proses ditamatkan.
-<span class="token operator">></span> <span class="token function">ulimit</span> -a <span class="token comment"># -a 列出所有当前资源极限</span> core <span class="token function">file</span> size<span class="token punctuation">(</span>blocks, -c<span class="token punctuation">)</span> 0 <span class="token comment">#-c 设置core文件的最大值.单位:blocks</span> data seg size <span class="token punctuation">(</span>kbytes, -d<span class="token punctuation">)</span> unlimited <span class="token comment">#-d 设置一个进程的数据段的最大值.单位:kbytes</span> scheduling priority <span class="token punctuation">(</span>-e<span class="token punctuation">)</span> 0 <span class="token comment">#</span> <span class="token function">file</span> size <span class="token punctuation">(</span>blocks, -f<span class="token punctuation">)</span> unlimited <span class="token comment">#-f Shell 创建文件的文件大小的最大值,单位:blocks</span> pending signals <span class="token punctuation">(</span>-i<span class="token punctuation">)</span> 385862 <span class="token comment">#</span> max locked memory <span class="token punctuation">(</span>kbytes, -l<span class="token punctuation">)</span> unlimited <span class="token comment">#-l 可以锁住的物理内存的最大值</span> max memory size <span class="token punctuation">(</span>kbytes, -m<span class="token punctuation">)</span> unlimited <span class="token comment">#-m 可以使用的常驻内存的最大值,单位:kbytes</span> <span class="token function">open</span> files<span class="token punctuation">(</span>-n<span class="token punctuation">)</span> 300000 <span class="token comment">#-n 每个进程可以同时打开的最大文件数</span> pipe size<span class="token punctuation">(</span>512 bytes, -p<span class="token punctuation">)</span> 8 <span class="token comment">#-p 设置管道的最大值,单位为block,1block=512bytes</span> POSIX message queues <span class="token punctuation">(</span>bytes, -q<span class="token punctuation">)</span> 819200 <span class="token comment">#</span> real-time priority<span class="token punctuation">(</span>-r<span class="token punctuation">)</span> 0 <span class="token comment">#</span> stack size<span class="token punctuation">(</span>kbytes, -s<span class="token punctuation">)</span> 8192 <span class="token comment">#-s 指定堆栈的最大值:单位:kbytes</span> cpu <span class="token function">time</span> <span class="token punctuation">(</span>seconds, -t<span class="token punctuation">)</span> unlimited <span class="token comment">#-t 指定每个进程所使用的秒数,单位:seconds</span> max user processes<span class="token punctuation">(</span>-u<span class="token punctuation">)</span> 655360 <span class="token comment">#-u 可以运行的最大并发进程数</span> virtual memory<span class="token punctuation">(</span>kbytes, -v<span class="token punctuation">)</span> unlimited <span class="token comment">#-v Shell可使用的最大的虚拟内存,单位:kbytes</span> <span class="token function">file</span> locks<span class="token punctuation">(</span>-x<span class="token punctuation">)</span> unlimited <span class="token comment">#</span>
Tukar bilangan maksimum utas dan had bilangan maksimum fail
-<span class="token operator">></span> vim /etc/security/limits.conf <span class="token comment"># 添加如下的行</span> * soft noproc 65535 * hard noproc 65535 * soft nofile 65535 * hard nofile 65535
Antaranya:
Untuk had bilangan maksimum fail terbuka, anda hanya perlu mengubah suai parameter sebelumnya Had bilangan sambungan linux tcp, tetapi untuk had bilangan maksimum utas pengguna, anda juga perlu menukar mengikuti fail mengikut sistem yang berbeza
Operasi di bawah sistem centos7
Dalam sistem centos7, nilai nproc di bawah ulimit dikawal melalui /etc/security/limits.d/20-nproc.conf
-<span class="token operator">></span> <span class="token function">cat</span> /etc/security/limits.d/20-nproc.conf *softnproc 1024 root softnproc unlimited
Anda perlu mengedit fail /etc/security/limits.d/20-nproc.conf untuk meningkatkan nilai had
2. Tetapkan had sumber sistem untuk pengguna ini
Tambah kandungan berikut pada fail /etc/pam.d/login:
-<span class="token operator">></span> <span class="token function">sudo</span> vim /etc/pam.d/login <span class="token comment"># 加入如下内容</span> session required /lib/security/pam_limits.so
Ini memberitahu Linux bahawa selepas pengguna melengkapkan log masuk sistem, modul pam_limits.so harus dipanggil untuk menetapkan had maksimum sistem pada bilangan pelbagai sumber yang boleh digunakan oleh pengguna (termasuk had pada bilangan maksimum fail yang pengguna boleh membuka), dan pam_limits.so Modul akan membaca konfigurasi daripada fail /etc/security/limits.conf untuk menetapkan nilai had ini. Simpan fail ini selepas membuat perubahan.
3 Ubah suai sekatan kernel rangkaian pada sambungan TCP/UDP
Apabila menulis pengendali komunikasi pelanggan di Linux yang menyokong sambungan TCP konkurensi tinggi, kadangkala anda mendapati bahawa walaupun sistem telah menaikkan had bilangan fail yang boleh dibuka oleh pengguna pada masa yang sama, masih akan ada masalah apabila bilangan sambungan TCP serentak jatuh ke nombor tertentu Ia juga gagal mewujudkan sambungan TCP baharu.
Linux内核编译时默认设置的本地端标语范围可能太小,因而须要更改此本地端口范围限制。
内核参数的优化
更改/etc/sysctl.conf文件,/etc/sysctl.conf是拿来控制linux网路的配置文件,对于依赖网路的程序(如web服务器和cache服务器)十分重要
-<span class="token operator">></span> <span class="token function">sudo</span> vim /etc/sysctl.conf <span class="token comment"># 将原内容批注并写入如下内容</span> net.ipv4.ip_local_port_range <span class="token operator">=</span> 1024 65535 net.core.rmem_max <span class="token operator">=</span> 16777216 net.core.wmem_max <span class="token operator">=</span> 16777216 net.ipv4.tcp_rmem <span class="token operator">=</span> 4096 87380 16777216 net.ipv4.tcp_wmem <span class="token operator">=</span> 4096 65536 16777216 net.ipv4.tcp_fin_timeout <span class="token operator">=</span> 10 net.ipv4.tcp_tw_recycle <span class="token operator">=</span> 1 net.ipv4.tcp_timestamps <span class="token operator">=</span> 0 net.ipv4.tcp_window_scaling <span class="token operator">=</span> 0 net.ipv4.tcp_sack <span class="token operator">=</span> 0 net.core.netdev_max_backlog <span class="token operator">=</span> 30000 net.ipv4.tcp_no_metrics_save <span class="token operator">=</span> 1 net.core.somaxconn <span class="token operator">=</span> 10240 net.ipv4.tcp_syncookies <span class="token operator">=</span> 0 net.ipv4.tcp_max_orphans <span class="token operator">=</span> 262144 net.ipv4.tcp_max_syn_backlog <span class="token operator">=</span> 262144 net.ipv4.tcp_synack_retries <span class="token operator">=</span> 2 net.ipv4.tcp_syn_retries <span class="token operator">=</span> 2
更改完之后执行:
sysctl -p /etc/sysctl.conf
sysctl -w net.ipv4.route.flush<span class="token operator">=</span>1
致使配置生效(亲测对TCP和UDP都适用)
至此操作完成。假如没有生效linux tcp连接数限制,这么就reboot。
Atas ialah kandungan terperinci Kaedah dan prasyarat untuk mengubah suai bilangan maksimum sambungan TCP dan nombor UDP dalam sistem Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!