看一下net.core.somaxconn这个值,它定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128;如果这个值过小,是会造成这种情况的,毕竟我看到你的日志中,idel的进程其实还有不少,说明不是进程不够,而是进程根本还没有起作用就已经有问题了。
你可以通过下面这个命令查看:
cat /proc/sys/net/core/somaxconn
改动的话可以
echo 1000 >/proc/sys/net/core/somaxconn
修改somaxconn
该内核参数默认值一般是128(定义了系统中每一个端口最大的监听队列的长度),对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。
echo 2048 > /proc/sys/net/core/somaxconn 但是这样系统重启后保存不了
在/etc/sysctl.conf中添加如下
net.core.somaxconn = 2048
然后在终端中执行
sysctl -p