Maison  >  Article  >  Tutoriel système  >  Méthodes et conditions préalables pour modifier le nombre maximum de connexions TCP et de numéros UDP dans les systèmes Linux

Méthodes et conditions préalables pour modifier le nombre maximum de connexions TCP et de numéros UDP dans les systèmes Linux

王林
王林original
2024-07-16 14:25:32674parcourir

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

Modifiez le nombre maximum de connexions TCP et les limites UDP dans le système Linux

Prérequis : avoir l'autorisation Root

La configuration par défaut du système est suffisante pour une utilisation quotidienne, et lors de l'exécution d'une programmation réseau à large concurrence, si le nombre de connexions est dépassé, une erreur sera signalée lorsque le nombre maximum de fichiers ouverts est dépassé et de nouvelles connexions ne peuvent pas être créé (le nombre maximum de processus est dépassé). Erreur d'allocation de ressources

1. Modifier le rôle de ulimit dans la limitation du nombre maximum de processus utilisateur et du nombre maximum de fichiers

ulimit : affiche (ou définit) la limite (limite) des ressources que l'utilisateur peut utiliser dans l'espace Linux du système d'exploitation Linux chinois. Cette limite est divisée en limite souple (limite actuelle) et limite stricte (limite supérieure), où la limite est définie. La limite stricte est la limite supérieure de la limite logicielle, les ressources système utilisées par l'application pendant le fonctionnement ne dépassent pas la limite logicielle correspondante et tout rattrapage entraînera l'arrêt du processus.

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

Modifiez le nombre maximum de threads et le nombre maximum de fichiers

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

Parmi eux :

Pour la limite du nombre maximum de fichiers ouverts, il vous suffit de modifier les paramètres précédents La limite du nombre de connexions TCP Linux, mais pour la limite du nombre maximum de threads utilisateur, vous devez également modifier le suivre les fichiers selon différents systèmes

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

Fonctionnement sous système centos7

Dans le système centos7, la valeur de nproc sous ulimit est contrôlée via /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

Vous devez modifier le fichier /etc/security/limits.d/20-nproc.conf pour augmenter la valeur limite

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

2. Définir les limites des ressources système pour cet utilisateur

Ajoutez le contenu suivant au fichier /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

Cela indique à Linux qu'une fois que l'utilisateur a terminé la connexion au système, le module pam_limits.so doit être appelé pour définir la limite maximale du système sur le nombre de ressources diverses que l'utilisateur peut utiliser (y compris la limite sur le nombre maximum de fichiers que l'utilisateur peut utiliser). l'utilisateur peut ouvrir), et les modules pam_limits.so liront la configuration du fichier /etc/security/limits.conf pour définir cette valeur limite. Enregistrez ce fichier après avoir apporté des modifications.

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

3. Modifier les restrictions du noyau réseau sur les connexions TCP/UDP

Lors de la compilation d'un programme de traitement des communications client prenant en charge des connexions TCP simultanées élevées sous Linux, vous constaterez parfois que même si le système a levé la limite du nombre de fichiers que les utilisateurs peuvent ouvrir en même temps, il y aura toujours des problèmes lorsque le nombre Le nombre de connexions TCP simultanées tombe à un certain nombre. Il ne parvient pas non plus à établir une nouvelle connexion 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。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn