现象:
1、虚拟用户增加
2、TPS抖动规律
3、响应时间从TPS抖动开始变的不规律
分析过程:
1. 查看操作系统CPU、Memory、I/O、Network
2. 查看数据库
3. 查看应用服务器
4. 查看中间件
发现问题
1. 网络中有大量timewait
netstat -a | grep TIME_WAIT
netstat -a | grep TIME_WAIT | wc -l
尝试优化
尝试一:为TIME_WAIT修改TCP参数
服务器出现大量timewait,说明服务端主动断开了TCP 链接
打开 sysctl.conf 文件,修改以下几个参数:
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 3
net.ipv4.tcp_keepalive_time = 3
结果:无效
尝试二:修改Nginx的proxy_ignore_client_abort
让Nginx忽略客户端主动中断时出现的错误
proxy_ignore_client_abort on;
结果:无效
尝试三:换Nginx和Nginx所在的服务器
结果:无效
尝试四:关掉防火墙
service iptables stop
结果:TPS上去了
解决方案:
方案一:关闭防火墙在当前端口的跟踪
-A PREROUTING -p tcp -m tcp --dport 80 -j NOTRACK
方案二:net.netfilter.nf_conntrack_max的值
方案三:删除跟踪模块
lsmod | grep nf_conntrack