1234567891011121314151617181920212223242526272829303132333435363738 |
- 现状:
- netstat -antp | grep TIME_WAIT | wc -l
- 生产环境网络链接出现大量TIME_WAIT
- 分析:
- 目前访问量不应该出现这么多TIME_WAIT,虽然客户端有定时器,但是如果http是keep-alive是可以复用链接的。
- 可能是客户端http connetion是close导致。
- 处理:
- 1、测试环境抓包发现发现客户端请求是keep-alive,且交互过程一直复用该链接。具体参见:nginx长连接配置_tcpdump.cap
- 2、看具体网络链接状态,确认nginx断开链接。
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 0 0 172.18.51.51:7900 127.0.0.1:36636 TIME_WAIT -
- 3、修改upstream配置,增加nginx代理后端服务器长连接配置。
- # logic server
- upstream brainLogicServer {
- server 127.0.0.1:7900;
- keepalive 300;
- }
- server {
- listen 80;
- server_name brain.test.xsbanruo.com;
- access_log /var/log/nginx/brain.logic.log main;
-
- location / {
- proxy_pass http://brainLogicServer;
- proxy_set_header Host $Host;
- proxy_set_header x-forwarded-for $remote_addr;
- proxy_set_header X-Real-IP $remote_addr;
- add_header Cache-Control no-store;
- add_header Pragma no-cache;
- proxy_http_version 1.1;
- proxy_set_header Connection "";
- }
- }
|