相关疑难解决方法(0)

如何减少 TIME_WAIT 中的套接字数量?

Ubuntu 服务器 10.04.1 x86

我有一台在 nginx 后面带有 FCGI HTTP 服务的机器,它为许多不同的客户端提供许多小的 HTTP 请求。(高峰时段每秒大约 230 个请求,平均响应大小为 650 字节,每天有数百万个不同的客户端。)

结果,我有很多套接字,挂在 TIME_WAIT 中(使用下面的 TCP 设置捕获图表):

时间的等待

我想减少套接字的数量。

除了这个我还能做什么?

$ cat /proc/sys/net/ipv4/tcp_fin_timeout
1
$ cat /proc/sys/net/ipv4/tcp_tw_recycle
1
$ cat /proc/sys/net/ipv4/tcp_tw_reuse
1

更新:有关机器上实际服务布局的一些详细信息:

客户端-----TCP-socket--> nginx(负载均衡器反向代理) 
       -----TCP-socket--> nginx (worker) 
       --domain-socket--> fcgi-software
                          --single-persistent-TCP-socket--> Redis
                          --single-persistent-TCP-socket--> MySQL (其他机器)

我可能应该切换负载平衡器 --> 工作线程连接到域套接字,但关于 TIME_WAIT 套接字的问题仍然存在——我计划很快在单独的机器上添加第二个工作线程。在这种情况下将无法使用域套接字。

ubuntu nginx linux-networking high-load

41
推荐指数
1
解决办法
8万
查看次数

Haproxy 中有很多 FIN_WAIT2、CLOSE_WAIT、LAST_ACK 和 TIME_WAIT

我们正在为大约 10k+ 并发用户在生产中运行 haproxy。但是我们在 netstat 输出中看到了很多 FIN_WAIT2、CLOSE_WAIT、LAST_ACK 和 TIME_WAIT。此输出位于 8G ubuntu-12.04 节点上。

   8046 CLOSE_WAIT  
      1 CLOSING  
      1 established)  
  40869 ESTABLISHED  
   1212 FIN_WAIT1  
   7575 FIN_WAIT2  
      1 Foreign  
   2252 LAST_ACK  
      7 LISTEN  
    143 SYN_RECV  
   4920 TIME_WAIT  
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我需要做什么调整吗?
请注意,所有这些连接都是持久连接。

tcp_fin_timeout = 30  
tcp_keepalive_time = 1800
Run Code Online (Sandbox Code Playgroud)

现在,该应用程序运行良好。但是想知道当我们向这个 haproxy 节点添加更多用户时会不会有任何问题。

performance-tuning haproxy

5
推荐指数
1
解决办法
2万
查看次数