有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java WebSphere web容器线程的最大线程状态为runnable

我们的WebSphere环境有2个节点代理和4个应用服务器。在高流量情况下,其中一个应用程序服务器停止响应请求,并跳到最大web容器线程数
在分析线程转储时,我们发现大约60%的线程处于可运行状态,其中20%处于等待和停止状态
我们在线程转储中没有看到任何死锁警告。 仔细观察,我们发现其中一个web容器线程拥有以下消息的锁:

Owns Monitor Lock on com/ibm/ws/classloader/ExtJarClassLoader@0x0A00000000FA6F30

有人能帮助理解上述错误及其解决方法吗


共 (1) 个答案

  1. # 1 楼答案

    查看拥有锁的线程的堆栈跟踪,然后查看等待该锁的所有其他线程的堆栈跟踪,这一点很重要。对于ExtJarClassLoader,这几乎肯定意味着所有线程都在尝试执行loadClass操作。如果许多线程正在尝试此操作并被阻止,那么这通常意味着运行的代码正在尝试一个失败的loadClass操作,捕获ClassNotFoundException并继续。创建和抛出ClassNotFoundException代价高昂,因此通常应修改代码以缓存整体结果(例如,如果它尝试一系列类加载,则应以某种方式缓存正/负结果)。如果调用loadClass的代码是第三方库,这当然会很复杂