websphere工作管理器超过最大线程数



我定义了一个最大线程数为16的工作管理器,它是不可增长的。然而,在日志中,我可以看到线程编号高达180+。

[WorkManager.Transformer : 180]
[WorkManager.Transformer : 181]
[WorkManager.Transformer : 182]
[WorkManager.Transformer : 183]

我怀疑正是由于这个原因,线程在等待资源时变得非常饥饿,并在180秒后抛出JDBC ConnectionWaitTimeoutException。

当最大限制设置为16时,为什么会产生这么多线程。我还能查什么?

线程索引是在服务器生存期内为该线程池创建的线程总数,它不一定表示当前有多少线程处于活动状态。如果池的最小值和最大值不相同,则在一段时间的不使用后,池将删除线程,直到其配置的最小值,然后在需求超过该最小级别时创建新线程。新创建的线程的索引只是下一个尚未使用的数字。

例如,如果您有一个最小大小为1、最大大小为5的池,并且您同时向它分派五个工作项,它将创建名称为"的线程;池:0〃;通过";池:4〃;。当这些工作项完成时,经过一段时间后,除一个工作项外,所有工作项都将被删除,这是由最小池大小指定的。如果您再次将五个工作项分派到池中,则将有四个名为"的线程;池:5〃;通过";池:8〃;将被创建,但您只有五个活动线程,即使最高索引号是8。

如果您担心实际情况并非如此,您可以从进程(kill -3 <pid>或通过服务器的管理控制台请求它(收集javacore,并简单地用";WorkManager.Transformer";以他们的名义——我猜会是16岁或以下。javacore在确定导致资源问题的原因时也很有用,因为您将能够看到线程堆栈以及它们正在等待的任何锁或其他资源

最新更新