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 套接字的问题仍然存在——我计划很快在单独的机器上添加第二个工作线程。在这种情况下将无法使用域套接字。
在 http ( over tcp ) 中,有一个名为 keep " alive "的标头
如果所有数据包来自不同的数据包,我不明白如何在 tcp 中打开连接
来源(路由器决定- 通过互联网)