Tomcat 未从 TCP recv-Q 获取数据,挂起

Tomcat 未从 TCP recv-Q 获取数据,挂起

我有一个程序,它本质上是一个在 CentOS Linux 6.3 上运行带有 postgreSQL DB 的 tomcat 服务器。当客户端向服务器提交大量数据(~10MB)时,这些数据应该在 TCP 9090 上接收,但客户端似乎挂起了,没有收到服务器的响应。我在日志中没有看到任何重要信息,我所能找到的只是连接存在于端口 9090 上,并且在 netstat 的输出中 recv-Q 中有大约 3.5 MB。这可能是系统问题还是应用程序问题?

strace 显示的内容如下: 9089 futex(0x7fdd80862528, FUTEX_WAKE_PRIVATE, 1) = 0 9089 futex(0x7fdd81e145a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1374870092, 226655000}, ffffffff <unfinished ...> 9085 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 9085 futex(0x7fdd88004728, FUTEX_WAKE_PRIVATE, 1) = 0 9085 futex(0x7fdd94013464, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1374870092, 226812000}, ffffffff <unfinished ...> 9071 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out) 9071 futex(0x7fde00092c28, FUTEX_WAKE_PRIVATE, 1) = 0 9071 futex(0x40b62e64, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1374870087, 319631000}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 9071 futex(0x7fde00092c28, FUTEX_WAKE_PRIVATE, 1) = 0 9071 futex(0x40b62e64, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1374870087, 369779000}, ffffffff

答案1

这最终导致 Java 进程内存不足。添加 RAM 并调整 DB 解决了这个问题。Java 内存问题?令人震惊,不是吗?

相关内容