【发布时间】:2016-01-22 09:11:13
【问题描述】:
我用 java 测试我的服务器,并监控它的 cpu 使用情况。 首先我使用 top 命令,它显示如下:
然后,我使用命令
ps -C java -L -o pcpu,cpu,nice,state,cputime,pid,tid |种类 显示所有的java线程
第一列是每个线程的cpu使用率。
而且我刚刚发现最高使用率只有0.3,所有cpu使用率加起来远低于31.6。
希望有人能告诉我为什么,THKS
编辑:
要查看更多信息,我使用 top -Hp 1234 (1234is my java pid) 我突然发现有一个java线程(pidis 1238),cpu使用率通常突然提升到10-20甚至更多,我认为应该归咎于此。
然后我使用
jstack 1234 |grep 4d6 -A 30
查看线程的更多细节,它向我展示了:
“VM 线程”prio=10 tid=0x00007ff6ec060000 nid=0x4d6 可运行
“VM 周期性任务线程”prio=10 tid=0x00007ff6ec091800 nid=0x4dd 等待条件
JNI 全局引用:262
希望你能帮我分析一下。
【问题讨论】:
-
尝试使用
htop获取详细信息 -
THKS 回答,我已经安装并习惯了 htop,但它没有解决我的问题,我想要查看每个 java 线程的 cpu 使用情况,因为在我的监视器中它显示太高了,但是我被告知每个java线程的java cpu使用率都低于0.3%。
-
因为线程列表是由
ps在与总和值(31.6)不同的时刻输出的。两者不匹配。 -
Thks,没错,我发现有一个java线程,它的cpu使用率突然上升到10-20%,我认为应该怪这个线程,我在我的问题中添加了详细信息,希望您能提供更多帮助
-
使用Linux小工具“threadcpu”可以帮你列出CPU使用率高的线程。它通过使用测量间隔而不是通过从流程开始计算所有 jiffies 来做到这一点。 tuxad.com/blog/archives/2018/10/01/…