1
chrlwang 2016-05-22 15:32:42 +08:00
说说这服务器是干啥呀?咱不能二话不说就改底层系统配置啊。
|
3
firebroo 2016-05-22 16:04:49 +08:00
这么点不算多吧。
|
5
firebroo 2016-05-22 16:14:28 +08:00
@openbaby ESTABLISHED,SYN_REV 的数量都不多说明你的 nginx 服务器连接数量不多啊, TCP 的 TIME_WAIT 状态是通信双方主动关闭 sockfd 方会进入此状态,肯定不是 nginx 导致的,你要看是什么进程产生了 TIME_WAIT 。
|
7
littlehz 2016-05-22 16:49:28 +08:00 1
出现 TIME_WAIT 的原因是因为服务器主动关闭了 TCP 连接,无论作为 client 还是 server ,哪方主动 close TCP 连接,必然在这方出现 TIME_WAIT 。
所以要避免出现 TIME_WAIT ,就是不主动关闭 TCP 连接。 如果你的机器纯 nginx 反向代理,没有别的。那: 1 、 http 段的 keepalive 开启,不主动关闭浏览器客户端的连接。 2 、 upstream 段的 keepalive 开启,不主动关闭与后端 upstream 服务器的连接。同时需要修改 Proxy Header , HTTP/1.1 协议,移除掉 http close 头 如果你的机器还跑了 php ,那可能连接 mysql 是吧? php 连接 mysql 的函数,使用 persistent 持久连接。 跑了 php ,可能连接 redis ? php 连接 redis 的函数,使用 persistent 持久连接。 要看你的业务,系统底层怎么改都不能彻底解决 TIME_WAIT , TCP 协议设计如此。 |
8
openbaby OP |
9
skydiver 2016-05-22 16:55:58 +08:00 via iPad
根本不是问题,不用解决。
TIME_WAIT 本身也不会占用很多资源,何必要解决。 建议多看看 TCPIP 协议相关内容。 |
10
openbaby OP @skydiver 现在的问题是打开页面时快时慢,有一阵瞬间打开,有一阵得等好几秒才有响应(感觉像服务器处理不过来,在排队的样子)。 ping 值一直是稳定的,带宽和 cpu 内存也是波动不大。
|
11
skydiver 2016-05-22 17:17:05 +08:00 via iPad 1
@openbaby 那你应该看发送队列是不是满了。通过 ss -l 和 netstat 。这跟 TIME_WAIT 没关系。
|
13
littlehz 2016-05-23 23:29:54 +08:00
@vus520 默认短连接,每次都要三次握手。 upstream 里加了 keepalive ,并且配合 proxy/fastcgi 头的修改才是长连接。
|
14
wizardoz 2016-05-27 11:18:19 +08:00
总之这个配置不能乱改,有一次我参照晚上找的方法该了,貌似就是那个重用连接。
结果 TIME_WAIT 下来了,程序接入变得不稳定。 差点没把老板气急死。 |