当我使用 netstat 命令时,它显示..
tcp 0 0 本地主机:18056 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16683 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16701 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16888 本地主机:mysql TIME_WAIT
本地主机WAIT2TIME_WAIT 本地主机WAIT2TIME
tcp 0 0 本地主机:17725 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17682 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17414 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17606 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:17737 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16632 本地主机:mysql TIME_WAIT
tcp 0 0 本地主机:16825 本地主机:mysql TIME_WAIT 本地主机WAIT 时域主机WAIT 0 0 0 本地主机:mysql TIME_WAIT
本地主机时
tcp …
我正在使用 apache bench 为在 tomcat 上运行的 java 应用程序运行一些基准测试。
说我运行一个测试,如:
ab -c 10 -n 10000 http://localhost:8080/hello/world
Run Code Online (Sandbox Code Playgroud)
它会运行得很好。如果我遵循它:
ab -c 50 -n 50000 http://localhost:8080/hello/world
Run Code Online (Sandbox Code Playgroud)
再次它会运行良好,但如果我再试一次,它可能会在 3500 个完成的请求后开始变慢。
我需要帮助来尝试调试此问题的根本原因。
我跑到了上面,我有一些未使用的内存,所以内存似乎不是问题。
tomcat6 进程确实达到了 70-80 甚至 107%。
似乎重新启动 tomcat 可以解决问题,但有时需要重新启动服务器。
这是在分配了 200 个线程的默认 tomcat 安装上。
Tomcat 日志为空。
更新
因此,我将 tcp_tw_recycle/reuse 都更改为 1,并且现在运行 netstat 显示的计数非常低。
在更改 tcp_tw_recycle/reuse 之前,我注意到事情变慢并运行 netstat 并且我有 32400 个 tcp TIME_WAIT 连接。
所以现在运行基准测试的更新,使用 -k 开关,我看到了更多的吞吐量。但是,在某些时候事情又开始变慢了,但是现在重新启动 tomcat 使事情恢复正常。之前,即使我重新启动tomcat,运行ab 的响应时间也会非常非常慢。 现在更改 tcp_tw_recycle/reuse 后,重新启动 tomcat 使事情恢复正常。运行 top 显示只有大约 20% 的 cpu 的 tomcat,所以现在看来问题出在 tomcat 上,但我怎么知道是什么?
以下是 Munin 告诉我的有关通过服务器上的防火墙进行连接的信息:

下面是netstat -n关于这个的内容:
$ netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
2 CLOSE_WAIT
1 结束
3720 成立
34 FIN_WAIT1
21 FIN_WAIT2
13 LAST_ACK
6 听
4 SYN_RECV
第394话
据netstat,10% 的插座在TIME_WAIT; 根据穆宁的说法,75% 或更多。
这很奇怪。谁是对的?
有关配置等的更多详细信息,请访问:How to reduce number of sockets in TIME_WAIT?
HTTP 请求上的 keep-alive 和 TIME_WAIT 中的 tcp 套接字之间有什么关系 - 它们应该相关吗?
此外,系统和网络服务器设置是否应该保持一致,例如server.max-keep-alive-idle = 60?根据如何减少 TIME_WAIT 中的套接字数量?在 Linux 中,TIME_WAIT 状态被硬编码为 60 秒(至少对于 Linux 的 Ubuntu/Debain 值)。
在 lighttpd 中是默认值server.max-keep-alive-idle = 5,他们建议在高负载时甚至更低。如果 tcp 套接字可用,则在 5 秒后关闭 http 请求似乎是一种浪费——当然,假设设置按照net.ipv4.tcp_tw_reuse = 1它在锡上所说的进行。
这个相关的问题 - tcp 如何保持连接有效?[关闭]触及了这个问题,但没有为我完全回答。