我有一个简单的Java Servlet应用程序在运行。它有几个端点。尽管服务速度非常快,但我收到的一些请求有时会比预期花费更多时间。什么是杀死任何超过约20秒的处理请求的最佳方法?
答案 0 :(得分:4)
如果要中断请求处理线程并且使用Tomcat,可以尝试Stuck Thread Detection Valve:
<强> interruptThreadThreshold 强>
以秒为单位的最短持续时间,在该持续时间之后应该中断卡住的线程以尝试&#34;释放&#34;它
请注意,不保证线程会被取消。这通常适用于卡在I / O或锁上的线程,但在无限循环的情况下可能没用。
默认值为-1,禁用该功能。要启用它,该值必须大于或等于阈值。
最好在客户端中实施Circuit Breaker,因为interruptThreadThreshold
不能保证适用于所有情况。