在我的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中停止线程而无需该线程的配合...