【发布时间】:2018-03-27 05:39:03
【问题描述】:
我有一个简单的 Java Servlet 应用程序正在运行。它有几个端点。尽管服务非常快,但我收到的一些请求有时会比预期花费更多的时间。杀死处理时间超过约 20 秒的任何请求的最佳方法是什么?
【问题讨论】:
标签: java servlets java-threads
我有一个简单的 Java Servlet 应用程序正在运行。它有几个端点。尽管服务非常快,但我收到的一些请求有时会比预期花费更多的时间。杀死处理时间超过约 20 秒的任何请求的最佳方法是什么?
【问题讨论】:
标签: java servlets java-threads
如果你想中断请求处理线程并且你正在使用Tomcat你可以尝试Stuck Thread Detection Valve:
interruptThreadThreshold
应中断卡住的线程以尝试“释放”它的最短持续时间(以秒为单位)。
请注意,不能保证线程会解开。这通常适用于卡在 I/O 或锁上的线程,但在无限循环的情况下可能无用。
默认为 -1 禁用该功能。要启用它,该值必须大于或等于阈值。
在客户端实现Circuit Breaker 可能会更好,因为interruptThreadThreshold 不能保证适用于所有场景。
【讨论】: