在我的Web应用程序中,有些请求的持续时间超过20秒。但是在某些情况下,代码可能会导致无限循环或类似事件,从而减慢服务器速度。

我想在服务器端放置60秒的请求超时。这是在tomcat中实现的吗?

谢谢,
霍拉蒂

最佳答案

使用Tomcat 7,您可以添加StuckThreadDetectionValve,它将使您能够识别“卡住”的线程。您可以在要进行检测的应用程序的Context元素中设置阀门:

<Context ...>
  ...
  <Valve
    className="org.apache.catalina.valves.StuckThreadDetectionValve"
    threshold="60" />
  ...
</Context>

对于任何超过60秒的线程,这会将WARN条目写入到tomcat日志中,这将使您能够识别应用程序并禁止它们,因为它们有故障。

基于source code,您可能能够编写自己的尝试停止线程的阀,但是这会影响线程池,并且存在no reliable way在Java中停止线程而无需该线程的配合...

10-07 16:11
查看更多