gpt4 book ai didi

java - 池中没有可用连接,netstat 在 Recv-Q 中显示非零值

转载 作者:行者123 更新时间:2023-11-28 22:47:56 25 4
gpt4 key购买 nike

我有一个旧的 Java 应用程序在 Tomcat 6 上运行 Java 1.6。由于它在环境中的设置方式,很难进行任何内部诊断 - 基本上我不能触摸它 - 它是黑匣子。

由于缺少免费连接,该应用程序正在崩溃。限制设置得很高(最多 255 个并行连接),但即使打开的连接数达到 60 个,它仍然会崩溃。

netstat显示recvQ中有很多数据(仅举个例子):

tcp    1464      0 localhost:7076 remote-host1:3120 ESTABLISHED
tcp 2512 0 localhost:7611 remote-host2:3120 ESTABLISHED
tcp 6184 0 localhost:4825 remote-host3:3120 ESTABLISHED

我找不到关于此案例的任何有用提示(类似问题在这里:https://serverfault.com/questions/672730/no-connection-available-in-pool-netstat-recvq-shows-high-number)。

问题:
1) 为什么应用程序没有读取所有接收到的数据?
2)因为没有读取到所有的数据,所以又打开了一个到DB的连接。我说得对吗?

任何想法将不胜感激。

最佳答案

1) 应用程序如何处理读取的数据?可能是无法写入磁盘,正在等待其他条件,有线程锁等。

2) 打开新连接,因为无论 recvQ 如何,这些连接仍在使用中。

关于连接数,你也应该计算半关闭连接,这些TCP状态意味着连接仍然有效

ESTABLISHED
FIN_WAIT_1
FIN_WAIT_2
TIME_WAIT

在 Linux 上:
netstat -ant | grep -E '已建立|FIN_WAIT_1|FIN_WAIT_2|TIME_WAIT' |排序-k 6,6

为了进一步排除故障,建议获取线程和/或堆转储并分析它们。
Another case涉及 TIME_WAIT。

关于java - 池中没有可用连接,netstat 在 Recv-Q 中显示非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51558424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com