首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >盒子上的一些JVM显示出更高的CPU利用率。

盒子上的一些JVM显示出更高的CPU利用率。
EN

Stack Overflow用户
提问于 2013-12-02 16:41:06
回答 1查看 122关注 0票数 0

我们有一个weblogic集群横跨6个盒子。每个盒子有3个JVM。2方框4上的JVM显示出非常高的CPU利用率(在80-90%之间),而其他JVM的CPU利用率低于10%。

我们检查了负载平衡。这些请求正被统一地分发给所有JVM。所有JVM都正确地执行GC,垃圾收集没有问题。每个JVM具有相同的GC和内存配置。

有没有办法找出哪些线程正在使用高CPU?我们不能重新启动JVM,也不能修改它们上的任何设置,因为这些都是生产JVM。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 00:12:40

在你的方框4上试试这个外壳。

show-busy-java-threads.sh

它将显示这样的java繁忙线程:

代码语言:javascript
运行
复制
The stack of busy(0.2%) thread(3901/0xf3d) of java process(3626) of user(zuojing):
"ApplicationImpl pooled thread 16" daemon prio=10 tid=0x00007fbd54076000 nid=0xf3d waiting on condition [0x00007fbcd9636000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at com.intellij.util.TimeoutUtil.sleep(TimeoutUtil.java:58)
    at com.intellij.util.io.BaseOutputReader.doRun(BaseOutputReader.java:116)
    at com.intellij.util.io.BaseOutputReader$1.run(BaseOutputReader.java:57)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:454)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:701)
    at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:152)

The stack of busy(0.2%) thread(3897/0xf39) of java process(3626) of user(zuojing):
"ApplicationImpl pooled thread 15" daemon prio=10 tid=0x00007fbd1c39b800 nid=0xf39 waiting on condition [0x00007fbcd9838000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at com.intellij.util.TimeoutUtil.sleep(TimeoutUtil.java:58)
    at com.intellij.util.io.BaseOutputReader.doRun(BaseOutputReader.java:116)
    at com.intellij.util.io.BaseOutputReader$1.run(BaseOutputReader.java:57)
    at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:454)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:701)
    ....

然后跟踪堆栈,并在源代码中找出繁忙的线程在做什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20333315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档