gpt4 book ai didi

java - Tomcat 上失败的 HTTP 请求

转载 作者:行者123 更新时间:2023-11-28 21:54:02 27 4
gpt4 key购买 nike

我的网络应用程序在 64 位 Java 6.0.23、Tomcat 6.0.29(带有 Apache Portable Runtime 1.4.2)和 Linux (CentOS) 上运行。 Tomcat 的 JAVA_OPTS 包括 -Xincgc,它应该有助于防止长时间垃圾回收。

应用负载大,时断时续,想排查问题。

症状如下:HTTP 客户端间歇性地向 Web 应用程序发送 HTTP 请求并返回空响应。

该应用程序不使用数据库,因此 JDBC 连接绝对不是问题。所以我认为问题可能是以下之一:内存(可能是长垃圾回收)、线程不足或文件描述符不足。

我使用 javamelody 查看正在使用的线程数,似乎 maxThreads 设置得足够高,不会用完线程。同样,我们将可用文件描述符的数量设置为非常高的数量。

该应用确实占用了大量内存。看起来内存可能是这里的罪魁祸首,还是我可能忽略了其他东西?

不过,我想我的主要困惑是为什么垃圾回收会导致 HTTP 请求失败。直觉上,我猜测长垃圾回收可能会导致 HTTP 请求运行很长时间,但我不会猜测长垃圾回收会导致 HTTP 请求失败。


响应 Jon Skeet 评论的附加信息...

客户端绝对不会超时。空响应发生得相当快。失败时,没有数据,也没有 HTTP header 。

最佳答案

我非常怀疑垃圾收集是造成这个问题的原因。

你真的真的需要找出这个“空响应”到底包含什么:

  • 服务器是否只是切断连接?
  • 客户端是否超时?
  • 服务器是否给出有效的 HTTP 响应但没有数据?

其中的每一个都可以提出非常不同的方法来找出正在发生的事情。确定故障模式应该是您最关心的问题,IMO。在您知道之前,这完全是猜测。

关于java - Tomcat 上失败的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452616/

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