nginx并发连接能力优化

一次压力测试,nginx服务器老是报告TIME_WAIT 告警, 检查nginx配置和系统网络配置发现现有的配置并发能力弱,无法满足现有的并发请求的需求。

原始配置:

worker_processes  2;

events {
    worker_connections  2500;
}

改进方式:

  1. 使用epoll模式,增加并发连接数,增加nginx系统并发连接能力。
  2. 后端使用长连接, 提高端口利用率,减少TIME_WAIT状态比例, 使系统可以允许更多的TIME_WAIT。
  3. 优化tcp连接工作模式,减少FIN2_WAIT状态比例 (对应监控中的OTHERSTATE)。
worker_processes  4;

events {
    use epoll; #支持大量连接和非活动连接
    worker_connections 5000; 
    multi_accept on; #nginx在已经得到一个新连接的通知时,接收尽可能多的连接
}

 优化Linux系统关于TCPIP的连接的配置 vi /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1 表示开启syn cookies,当出现SYN等待队列一出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 1 表示开启重启重用,允许将time_wait scokets 重新用于新的连接,默认是0,表示关闭
net.ipv4.tcp_tw_reuse = 1   表示开启TCP连接中TIME WAIT sockets 快速回收,默认为0表示关闭
net.ipv4.tcp_fin_timeout = 1 修改默认的timeout时间
net.ipv4.tcp_max_syn_backlog = 4096 #表示SYN队列的长度,默认为1024,加大队列长度为4096,可以容纳更多等待连接的网络连接数。

最后执行/sbin/sysctl -p 

你可能感兴趣的:(nginx,服务器,运维)