首頁  >  文章  >  系統教程  >  修改 Linux 系統最大 TCP 連線和 UDP 數限制的方法與前提

修改 Linux 系統最大 TCP 連線和 UDP 數限制的方法與前提

王林
王林原創
2024-07-16 14:25:32641瀏覽

修改 Linux 系统最大 TCP 连接和 UDP 数限制的方法与前提

更改Linux系統最大TCP連接和UDP數限制

前提:擁有Root權限

系統的預設配置是足以滿足日常使用的,並且在進列寬並發的網路編程時,超出聯接個數會碰到最大打開文件數限制報錯、無法創建新聯接(超出最大進程數)、系統資源分配報錯

1、修改最大用戶進程數和最大檔案數限制ulimit的作用

ulimit:顯示(或設定)使用者可以使用的資源的限制(limit)中文linux作業系統linux空間,這限制分為軟限制(目前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程式在運作過程中使用的系統資源不超過對應的軟體限制,任何的追趕都會造成進程的中止。

-<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>

更改最大執行緒數和最大檔案數限制

-<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

其中:

對於最大開啟檔案數限制只須要修改前面的參數即可linux tcp連線數限制,但對於使用者最大執行緒數限制也須要依照系統不同變更下列檔案

linux tcp连接数限制_限制连接数有什么用_限制连接数量多少合适

centos7系統下操作

在centos7系統中,ulimit下邊的nproc的數值是透過/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

須要編輯/etc/security/limits.d/20-nproc.conf檔案將限制值改大

限制连接数有什么用_限制连接数量多少合适_linux tcp连接数限制

2、設定係統對該使用者的資源限制

在更改/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

這是告訴Linux在使用者完成系統登陸後,應呼叫pam_limits.so模組來設定係統對該使用者可使用的各類資源數目的最大限制(包括使用者可開啟的最大檔案數限制),而pam_limits.so模組都會從/etc/security/limits.conf檔案中讀取組態來設定這種限制值。更改完後儲存此文件。

限制连接数量多少合适_linux tcp连接数限制_限制连接数有什么用

3、修改網路核心對TCP/UDP連結的限制

在Linux上編撰支援高並發TCP聯接的顧客端通訊處理程序時,有時會發覺雖然早已解除了系統對用戶同時開啟檔案數的限制,但仍會出現並發TCP聯接數降低到一定數目時,再也未能成功建構新的TCP連結的現象。

Linux内核编译时默认设置的本地端标语范围可能太小,因而须要更改此本地端口范围限制。

内核参数的优化

限制连接数量多少合适_linux tcp连接数限制_限制连接数有什么用

更改/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。

以上是修改 Linux 系統最大 TCP 連線和 UDP 數限制的方法與前提的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn