基本命令
1、查看所有内核参数以及相应的值
sysctl -a
2、临时修改命令
sysctl -w net.core.somaxconn=32768
3、永久修改
修改/etc/sysctl.conf配置文件
echo "net.core.somaxconn= 4000 " >> /etc/sysctl.conf #必须以root身份执行,sudo无效
然后执行命令
sysctl -p
内核参数
-
net.core.somaxconn
net.core.somaxconn是Linux中的一个kernel参数,表示socket监听(listen)的backlog上限。什么是backlog呢?backlog就是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。
在Hadoop 1.0中,参数ipc.server.listen.queue.size控制了服务端socket的监听队列长度,即backlog长度,默认值是128。而Linux的参数net.core.somaxconn默认值同样为128。当服务端繁忙时,如NameNode或JobTracker,128是远远不够的。这样就需要增大backlog,例如我们的3000台集群就将ipc.server.listen.queue.size设成了32768,为了使得整个参数达到预期效果,同样需要将kernel参数net.core.somaxconn设成一个大于等于32768的值。
对于nginx+uwsgi结构来说,uwsgi的配置listen参数不能大于net.core.somaxconn,否则会抛异常,为了uwsgi优化,需要设置net.core.somaxconn