有用的Linux内核参数

 


 

somaxconn 端口最大的监听队列的长度

查看:cat /proc/sys/net/core/somaxconn
默认是128

修改:
vim /etc/sysctl.conf
增加:net.core.somaxconn = 2048
/sbin/sysctl -p

 

backlog的定义是已连接但未进行accept处理的SOCKET队列大小,已是(并非syn的SOCKET队列)。如果这个队列满了,将会发送一个ECONNREFUSED错误信息给到客户端,即 linux 头文件 /usr/include/asm-generic/errno.h中定义的“Connection refused”,(如果协议不支持重传,该请求会被忽略)

在使用listen函数时,内核会根据传入参数的backlog跟系统配置参数/proc/sys/net/core/somaxconn中,二者取最小值,作为“ESTABLISHED状态之后,完成TCP连接,等待服务程序ACCEPT”的队列大小。

 

nginx、apache、mysql、php-fpm都有backlog设置

 

我们设置为小于或等于系统的somaxconn即可

 

参考文档

 

http://www.ttlsa.com/linux/the-tcp-ip-kernel-parameter-optimization-of-linux/