nginx high concurrency optimization - easily cope with 10,000 concurrent


The default Linux kernel parameters and nginx parameter to consider is the most common scenario, is not suitable for high concurrency
so optimizing plan consists of two levels: the system level + nginx level


First, the system level
1, while adjusting the number of open files
the ulimit -n 65535
2, the maximum number of the TCP (SOMAXCONN) connected
echo 10000> / proc / SYS / NET / Core / SOMAXCONN
. 3, the TCP connection immediately recovered, reuse (recycle, reuse )
echo 1> / proc / SYS / NET / ipv4 / tcp_tw_reuse
echo 1> / proc / SYS / NET / ipv4 / tcp_tw_recycle
4, TCP flood not resist
echo 0> / proc / sys / net / ipv4 / tcp_syncookies
 


//修改配置
ulimit -n 65535
echo 10000 > /proc/sys/net/core/somaxconn
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 0 > /proc/sys/net/ipv4/tcp_syncookies

//测试
cat /proc/sys/net/core/somaxconn
cat /proc/sys/net/ipv4/tcp_tw_reuse
cat /proc/sys/net/ipv4/tcp_tw_recycle
cat /proc/sys/net/ipv4/tcp_syncookies



 

二、nginx层面
修改nginx配置文件,nginx.conf
增加work_rlimit_nofile和worker_connections数量,并禁用keepalive_timeout。
worker_processes  1; #nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数
worker_rlimit_nofile 20000; #一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致
events {
use epoll;#使用epoll的I/O模型
worker_connections 20000;#每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections
multi_accept on;
}
http {
keepalive_timeout 0;
}




 

Published 164 original articles · won praise 185 · views 260 000 +

Guess you like

Origin blog.csdn.net/qq_33729889/article/details/104069464