Linux 시스템의 최대 TCP 연결 수 및 UDP 제한 변경
전제 조건: 루트 권한이 있어야 합니다
시스템의 기본 구성은 일상적인 사용에 충분하며, 동시성 네트워크 프로그래밍을 수행할 때 연결 수가 초과되면 최대 열린 파일 수를 초과하면 오류가 보고되고 새 연결은 불가능합니다. 생성되었습니다(최대 프로세스 수를 초과했습니다). 리소스 할당 오류
1. 최대 사용자 프로세스 수와 최대 파일 수를 제한하는 ulimit의 역할을 수정합니다
ulimit: 중국 리눅스 운영체제 리눅스 공간에서 사용자가 사용할 수 있는 리소스의 제한(제한)을 표시(또는 설정)합니다. 이 제한은 소프트 제한(현재 제한)과 하드 제한(상한)으로 구분됩니다. 하드 제한은 소프트 제한의 상한이며 작업 중에 애플리케이션이 사용하는 시스템 리소스는 해당 소프트 제한을 초과하지 않으며 따라잡으면 프로세스가 종료됩니다.
으아악
최대 스레드 수 및 최대 파일 제한 수 변경
으아악
그 중:
최대 열린 파일 수 제한의 경우 이전 매개변수만 수정하면 됩니다. Linux TCP 연결 수 제한, 그러나 최대 사용자 스레드 수 제한의 경우 매개변수도 변경해야 합니다. 다양한 시스템에 따른 파일 따라가기
centos7 시스템에서 작동
centos7 시스템에서는 ulimit 아래의 nproc 값은 /etc/security/limits.d/20-nproc.conf를 통해 제어됩니다
으아악
제한 값을 늘리려면 /etc/security/limits.d/20-nproc.conf 파일을 편집해야 합니다
2. 이 사용자에 대한 시스템 리소스 제한을 설정하세요
/etc/pam.d/login 파일에 다음 콘텐츠를 추가하세요.
으아악
이것은 사용자가 시스템 로그인을 완료한 후 pam_limits.so 모듈을 호출하여 사용자가 사용할 수 있는 다양한 리소스 수에 대한 시스템의 최대 제한을 설정해야 함을 Linux에 알려줍니다(사용자가 사용할 수 있는 최대 파일 수에 대한 제한 포함). 사용자가 열 수 있음), pam_limits.so 모듈은 /etc/security/limits.conf 파일에서 구성을 읽어 이 제한 값을 설정합니다. 변경 후 이 파일을 저장하세요.
3. TCP/UDP 연결에 대한 네트워크 커널 제한 수정
고동시성 TCP 연결을 지원하는 Linux에서 클라이언트 통신 핸들러를 작성할 때 시스템이 사용자가 동시에 열 수 있는 파일 수에 대한 제한을 높였음에도 불구하고 파일 수를 초과하면 여전히 문제가 발생하는 경우가 있습니다. 동시 TCP 연결이 특정 수로 감소합니다. 또한 새 TCP 연결을 성공적으로 설정하지 못합니다.
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。
위 내용은 Linux 시스템에서 최대 TCP 연결 수 및 UDP 수를 수정하기 위한 방법 및 전제 조건의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!