在Java servlet中杀死请求太久的请求

时间:2018-03-26 20:31:02

标签: java servlets java-threads

我有一个简单的Java Servlet应用程序在运行。它有几个端点。尽管服务速度非常快,但我收到的一些请求有时会比预期花费更多时间。什么是杀死任何超过约20秒的处理请求的最佳方法?

1 个答案:

答案 0 :(得分:4)

如果要中断请求处理线程并且使用Tomcat,可以尝试Stuck Thread Detection Valve

  

<强> interruptThreadThreshold

     

以秒为单位的最短持续时间,在该持续时间之后应该中断卡住的线程以尝试&#34;释放&#34;它

     

请注意,不保证线程会被取消。这通常适用于卡在I / O或锁上的线程,但在无限循环的情况下可能没用。

     

默认值为-1,禁用该功能。要启用它,该值必须大于或等于阈值。

最好在客户端中实施Circuit Breaker,因为interruptThreadThreshold不能保证适用于所有情况。