socket通信方面:
1、增大nginx的work_connections
增加nginx每个工作进程的最大连接数
修改nginx.conf
events {
worker_connections 1024;
}
2、增大系统内核参数somaxconn
这个参数定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为1024。
这个参数限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载 web服务环境来说,大多数环境这个值建议增加到 1024 或者更多。 服务进程会自己限制侦听队列的大小(例如 sendmail(8) 或者 Apache),常常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。
echo 50000 > /proc/sys/net/core/somaxconn
sysctl -p
3、使系统tcp连接快速回收
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
4、使系统tcp连接重用
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
5、放弃洪水抵御
默认值是0
只 有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时象对方发送syncookies。 目的是为了防止syn flood攻击。
注 意:该选项千万不能用于那些没有收到攻击的高负载服务器,如果在日志中出现synflood消息, 但是调查发现没有收到synflood攻击,而是合法用户的连接负载过高的原因,你应该调整其它参 数来提高服务器性能。
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
文件方面:
1、调整Nginx每个工作进程允许打开的文件数目
worker_limit_nofiles 1000;
#user nobody;
worker_processes 1;
worker_rlimit_nofile 1000;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
2、设置内可以打开最大文件描述符的数量。
ulimit -n 10240
另外在客户端多的高并发场景中,将nginx的keep-alive关掉能提高并发率,如果在少数固定客户端,长时间极高频次的访问服务器,启用keep-alive非常合适
#keepalive_timeout 0;
keepalive_timeout 65;