为了让系统可以支持更大的并发,除了必须安装event扩展(或libevent扩展)以外,优化linux内核也是重中之重,如下优化每一项都很是很是重要,请务必按逐一完成。linux
打开文件 /etc/sysctl.conf,增长如下设置网络
#该参数设置系统的TIME_WAIT的数量,若是超过默认值则会被当即清除 net.ipv4.tcp_max_tw_buckets = 20000 #定义了系统中每个端口最大的监听队列的长度,这是个全局的参数 net.core.somaxconn = 65535 #对于还未得到对方确认的链接请求,可保存在队列中的最大数目 net.ipv4.tcp_max_syn_backlog = 262144 #在每一个网络接口接收数据包的速率比内核处理这些包的速率快时,容许送到队列的数据包的最大数目 net.core.netdev_max_backlog = 30000 #可以更快地回收TIME-WAIT套接字。此选项会致使处于NAT网络的客户端超时,建议为0 net.ipv4.tcp_tw_recycle = 0 #系统全部进程一共能够打开的文件数量 fs.file-max = 6815744 #防火墙跟踪表的大小。注意:若是防火墙没开则会提示error: "net.netfilter.nf_conntrack_max" is an unknown key,忽略便可 net.netfilter.nf_conntrack_max = 2621440 运行 sysctl -p便可生效。
说明:并发
/etc/sysctl.conf 可设置的选项不少,其它选项能够根据本身的环境须要进行设置tcp
设置系统打开文件数设置,解决高并发下 too many open files 问题。此选项直接影响单个进程容纳的客户端链接数。高并发
Soft open files 是Linux系统参数,影响系统单个进程可以打开最大的文件句柄数量,这个值会影响到长链接应用如聊天中单个进程可以维持的用户链接数, 运行ulimit -n能看到这个参数值,若是是1024,就是表明单个进程只能同时最多只能维持1024甚至更少(由于有其它文件的句柄被打开)。若是开启4个进程维持用户链接,那么整个应用可以同时维持的链接数不会超过4*1024个,也就是说最多只能支持4x1024个用户在线能够增大这个设置以便服务可以维持更多的TCP链接。优化
Soft open files 修改方法:.net
(1)ulimit -HSn 102400code
这只是在当前终端有效,退出以后,open files 又变为默认值。接口
(2)在/etc/profile文件末尾添加一行ulimit -HSn 102400,这样每次登陆终端时,都会自动执行/etc/profile。队列
(3)令修改open files的数值永久生效,则必须修改配置文件:/etc/security/limits.conf. 在这个文件后加上:
* soft nofile 1024000 * hard nofile 1024000 root soft nofile 1024000 root hard nofile 1024000
这种方法须要重启机器才能生效。