2011-10-20 73 views
2

我想找到卡住的线程(通过设置StuckThreadMaxTime来监视连续的线程使用情况),并且假定每个事务都处于短时间运行状态,我想将其设置为一个较低的值 - 比如说20秒。WebLogic(10.3.5)线程池和阻塞线程 - 什么被认为是持续使用?

我怀疑,如果线程几乎立即被重新使用,线程返回到池(这将是合乎逻辑的)时,连续使用计数器会立即重新设置。但我不确定这一点。

有谁知道肯定的是,返回一个线程池会设置连续使用“时钟”与StuckThreadMaxTime即使线程池中的一段不可检测的小段时间?

回答

3

我不确定你的意思是“连续使用计数器”,但我可以解释Weblogic线程是如何工作的,希望能澄清你的疑问。

每个传入请求都由WL分配一个线程。这个线程将被用来完成请求,然后返回到线程池。

StuckThreadMaxTime做的是报告线程已经超过了同一个请求的时间限制。

因此,如果它被设置为默认值600秒,那么在超过该时间时将会记录一条消息。

注 - Weblogic 不会在600秒后清除卡住的线程,只要需要它就会继续处理。它只是在日志中记录这个事件。

最后,当请求完成时,线程可用于下一个请求。您可以验证多少请求每个线程都通过查看管理控制台完成

服务器>监控>线程将显示线程完成的请求

所以要回到你的问题相关的数量和多少 - 该StuckThreadMaxTime被重置为每个请求和跨在多个请求

此计时器在请求的时间开始,而不是当线程返回到池中没有进行。

你可以通过线程转储来验证 - 如果你得到一个StuckThread消息(比如说)线程7,但几分钟后你可以看到线程7可能已经清除并且正在服务另一个请求。

延伸阅读:

WebLogic stuck thread protection