Heim  >  Artikel  >  System-Tutorial  >  Methoden und Voraussetzungen zum Ändern der maximalen Anzahl von TCP-Verbindungen und UDP-Nummern in Linux-Systemen

Methoden und Voraussetzungen zum Ändern der maximalen Anzahl von TCP-Verbindungen und UDP-Nummern in Linux-Systemen

王林
王林Original
2024-07-16 14:25:32641Durchsuche

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

Ändern Sie die maximale Anzahl von TCP-Verbindungen und UDP-Grenzwerte im Linux-System

Voraussetzung: Root-Berechtigung haben

Die Standardkonfiguration des Systems reicht für den täglichen Gebrauch aus. Wenn bei der Durchführung einer Netzwerkprogrammierung mit breiter Parallelität die Anzahl der Verbindungen überschritten wird, wird ein Fehler gemeldet, wenn die maximale Anzahl geöffneter Dateien überschritten wird und keine neuen Verbindungen hergestellt werden können erstellt (die maximale Anzahl von Prozessen wurde überschritten).

1. Ändern Sie die Rolle von ulimit bei der Begrenzung der maximalen Anzahl von Benutzerprozessen und der maximalen Anzahl von Dateien

ulimit: Zeigt das Limit (Limit) der Ressourcen an, die der Benutzer im Linux-Bereich des chinesischen Linux-Betriebssystems verwenden kann. Dieses Limit ist in weiches Limit (aktuelles Limit) und hartes Limit (oberes Limit) unterteilt Das harte Limit ist die Obergrenze des weichen Limits. Die von der Anwendung während des Betriebs verwendeten Systemressourcen überschreiten nicht das entsprechende weiche Limit und ein Aufholen führt zum Abbruch des Prozesses.

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

Ändern Sie die maximale Anzahl von Threads und die maximale Anzahl von Dateien.

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

Unter ihnen:

Für die Begrenzung der maximalen Anzahl geöffneter Dateien müssen Sie nur die vorherigen Parameter

Die Begrenzung der Anzahl der Linux-TCP-Verbindungen ändern, aber für die Begrenzung der maximalen Anzahl von Benutzer-Threads müssen Sie auch die ändern Verfolgen von Dateien nach verschiedenen Systemen

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

Betrieb unter dem Centos7-System

Im Centos7-System wird der Wert von nproc unter ulimit über /etc/security/limits.d/20-nproc.conf gesteuert

-<span class="token operator">></span> <span class="token function">cat</span> /etc/security/limits.d/20-nproc.conf
*softnproc 1024
root softnproc unlimited

Sie müssen die Datei /etc/security/limits.d/20-nproc.conf bearbeiten, um den Grenzwert zu erhöhen

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

2. Legen Sie Systemressourcenlimits für diesen Benutzer fest

Fügen Sie den folgenden Inhalt zur Datei /etc/pam.d/login hinzu:

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

Dadurch wird Linux mitgeteilt, dass das Modul pam_limits.so aufgerufen werden soll, nachdem der Benutzer die Systemanmeldung abgeschlossen hat, um das maximale Limit des Systems für die Anzahl verschiedener Ressourcen festzulegen, die der Benutzer verwenden kann (einschließlich des Limits für die maximale Anzahl von Dateien, die der Benutzer verwenden kann). Der Benutzer kann öffnen), und pam_limits.so-Module lesen die Konfiguration aus der Datei /etc/security/limits.conf, um diesen Grenzwert festzulegen. Speichern Sie diese Datei, nachdem Sie Änderungen vorgenommen haben.

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

3. Ändern Sie die Einschränkungen des Netzwerkkernels für TCP/UDP-Verbindungen

Beim Kompilieren eines Client-Kommunikationsverarbeitungsprogramms, das viele gleichzeitige TCP-Verbindungen unter Linux unterstützt, werden Sie manchmal feststellen, dass das System zwar die Begrenzung der Anzahl der Dateien, die Benutzer gleichzeitig öffnen können, aufgehoben hat, es jedoch immer noch Probleme bei der Anzahl gibt Die Anzahl der gleichzeitigen TCP-Verbindungen sinkt auf eine bestimmte Anzahl. Außerdem gelingt es nicht, eine neue TCP-Verbindung erfolgreich aufzubauen.

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。

Das obige ist der detaillierte Inhalt vonMethoden und Voraussetzungen zum Ändern der maximalen Anzahl von TCP-Verbindungen und UDP-Nummern in Linux-Systemen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn