某日,检查业务服务器ing.....
top.......nginx的进程哪里去了?
ps -ef | grep nginx
发现master和workers都在,但是top中没有找到,感觉应该是进程还在,但是没有工作了.....
遂去日志里面确认了一下,发现访问日志没有刷屏.........
当年作为一个菜鸟,也没有仔细检查错误日志...........直接netstat -ant |grep 80,发现刷了很久的连接信息,于是查看了一下各种状态的连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}
发现ESTABLISHED的数量到了15000+,TIME_WAIT的数量到了30000+..........
于是检查nginx的nginx.conf配置,发现nginx的配置全部都是默认配置.......
之后分析业务的特点,把nginx的一些超时时间设置得比较短
proxy_connect_timeout 15;
proxy_send_timeout 15;
proxy_read_timeout 15;
keepalive_timeout 60;
client_body_timeout 30;
client_header_timeout 30;
sendfile on;
tcp_nodelay on;
fastcgi_connect_timeout 30;
fastcgi_send_timeout 30;
fastcgi_read_timeout 30;
fastcgi_intercept_errors on;
proxy_ignore_client_abort on;打开这个选项是因为有些用户会反复点击,发送同一个请求,所以在忽略安全隐患的前提下,让nginx处理这些请求