Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955410
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2010-10-12 16:52:42

nginx time_wait 过多的问题


今天查看nginx进程 发现好多的time_wait
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
  26363 TIME_WAIT
   1117 ESTABLISHED
    256 FIN_WAIT2
    172 FIN_WAIT1
     50 SYN_RECV
     12 LAST_ACK
      8 LISTEN
      1 established)
      1 Foreign

处理方法,修改sysctl.conf文件

那么系统TIME_WAIT的数量会变得比较多,这是由于nginx代理使用了短链接的方式和后端交互的原因,使得nginx和后端的 ESTABLISHED变得很少而TIME_WAIT很多。这不但发生在安装nginx的代理服务器上,而且也会使后端的app服务器上有大量的 TIME_WAIT。查阅TIME_WAIT资料,发现这个状态很多也没什么大问题,但可能因为它占用了系统过多的端口,导致后续的请求无法获取端口而造 成障碍,目前看来最好的办法是让每个TIME_WAIT早点过期: 在linux上的nginx负载均衡器上可以这么配置:

添加
让TIME_WAIT状态可以重用,这样即使TIME_WAIT占满了所有端口,也不会拒绝新的请求造成障碍
net.ipv4.tcp_tw_recycle = 1
#让TIME_WAIT尽快回收,我也不知是多久,观察大概是一秒钟
net.ipv4.tcp_tw_reuse = 1

或是 直接
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse

echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle

在来看看

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
   5877 TIME_WAIT
    901 ESTABLISHED
    307 FIN_WAIT1
     13 LAST_ACK
      8 LISTEN
      7 SYN_RECV
      3 CLOSING
      1 established)
      1 Foreign
明显减少了好多 
阅读(2563) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-13 16:34:06

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com