拿hbase基准测试列子来分析哪些线程使用比较高的cpu,环境是linux,基准测试命令:

hbase org.apache.hadoop.hbase.PerformanceEvaluation  --rows=500000 --nomapred --presplit=5 --writeToWAL=true randomWrite 5

首先查看占用cpu最高的进程和线程id,执行命令:

[ocnosql@server01 logs]$ ps Hh -eo pid,tid,pcpu | sort -nk3 |tail

12404 12429 0.6

13230 13291 0.6

14117 14178 1.7

14117 14172 1.9

14117 14294 4.6

14117 14295 4.6

14117 14296 4.6

14117 14293 4.7

14117 14297 4.7

14117 14173 8.0

获取线程14297十六进制,后面会在jstack里面用到

[ocnosql@server01 logs]$ printf "%x\n" 14297

37d9

然后根据jstack查看cpu使用为4.7%的线程id14297,进程id14117,获取jstack信息:

[ocnosql@server01 logs]$ jstack 14117 > jstack.log

然后vi jstack.log,查找线程id为37d9的线程

"TestClient-4" #40 prio=5 os_prio=0 tid=0x00007fefc0539000 nid=0x37d9 runnable [0x00007fefa73f9000]

java.lang.Thread.State: RUNNABLE

at org.apache.hadoop.hbase.util.Bytes$LexicographicalComparerHolder$UnsafeComparer.compareTo(Bytes.java:1276)

at org.apache.hadoop.hbase.util.Bytes.compareTo(Bytes.java:1187)

at org.apache.hadoop.hbase.util.Bytes$ByteArrayComparator.compare(Bytes.java:153)

at org.apache.hadoop.hbase.util.Bytes$ByteArrayComparator.compare(Bytes.java:142)

at java.util.concurrent.ConcurrentSkipListMap.cpr(ConcurrentSkipListMap.java:655)

at java.util.concurrent.ConcurrentSkipListMap.findNear(ConcurrentSkipListMap.java:1247)

at java.util.concurrent.ConcurrentSkipListMap.getNear(ConcurrentSkipListMap.java:1268)

at java.util.concurrent.ConcurrentSkipListMap.floorEntry(ConcurrentSkipListMap.java:2153)

at org.apache.hadoop.hbase.client.MetaCache.getCachedLocation(MetaCache.java:74)

at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getCachedLocation(ConnectionManager.java:1313)

at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1157)

at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1109)

at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:369)

at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:320)

at org.apache.hadoop.hbase.client.BufferedMutatorImpl.backgroundFlushCommits(BufferedMutatorImpl.java:198)

at org.apache.hadoop.hbase.client.BufferedMutatorImpl.doMutate(BufferedMutatorImpl.java:141)

at org.apache.hadoop.hbase.client.BufferedMutatorImpl.mutate(BufferedMutatorImpl.java:98)

- locked <0x00000000c6ccc800> (a org.apache.hadoop.hbase.client.BufferedMutatorImpl)

at org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest.testRow(PerformanceEvaluation.java:1384)

at org.apache.hadoop.hbase.PerformanceEvaluation$Test.testTimed(PerformanceEvaluation.java:1071)

at org.apache.hadoop.hbase.PerformanceEvaluation$Test.test(PerformanceEvaluation.java:1053)

at org.apache.hadoop.hbase.PerformanceEvaluation.runOneClient(PerformanceEvaluation.java:1612)

at org.apache.hadoop.hbase.PerformanceEvaluation$1.call(PerformanceEvaluation.java:410)

at org.apache.hadoop.hbase.PerformanceEvaluation$1.call(PerformanceEvaluation.java:405)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

可以看到此线程正在执行put操作,是基准测试中的一个client,符合我们的预期。

怎样分析java进程占cpu_java进程占用cpu过高分析是哪些线程相关推荐

  1. 服务器被挖矿入侵,进程 command为ld-linux-x86-64占用cpu很高,解决经历

    问题发现: 测试服务器看到 ld-linux-x86-64的进程占用cpu极高,user 是 oracle的. 测试环境不会有这么高的oracle负载.区块链技术盛行,让人不得不怀疑被抓去做矿机了. ...

  2. Java(TM) platform SE binary 占用cpu过高

    今天在学java的多线程,照着书上敲了一个简单的售票程序,如下: public class MultiThread {public static void main(String args[]){Se ...

  3. php opcache 坑,PHP-FPM占用CPU过高分析及OPcache解决

    平时站点CPU使用率都在10%以内,最近发现达到了50%左右 top查看服务器资源使用情况: %Cpu0 : 41.9 us, 1.3 sy, 0.0 ni, 56.1 id, 0.3 wa, 0.0 ...

  4. cpu线程_记w3wp占用CPU过高解决过程Dictionary线程安全

    项目上线以来一直存在一个比较揪心的问题,和一个没有信心处理的BUG,那就是在应用程序启动时有可能会导致cpu跑满99%或持续在一个值如50%左右,这样一来对服务器的压力是非常大的,经常出现服务器无法远 ...

  5. JVM占用CPU过高或者线程卡死定位

    新项目上线初期经常会遇到CPU过高或者线程卡死问题,这虽然是两类性能瓶颈问题,但是定位方法一致,项目中也遇到过几次,分享下定位经验 1.登录项目所在服务器,直接执行top命令,可以看到cpu使用情况, ...

  6. linux下查找java进程占用CPU过高原因

    linux下查找java进程占用CPU过高原因 1. 查找进程 top查看进程占用资源情况 明显看出java的两个进程22714,12406占用过高cpu. 2.查找线程 使用top -H -p &l ...

  7. window 查找 java 进程中占用cpu比较高的线程

    概述 公司内部的一个产品 (java 开发的) 运行在 window 虚拟机上,运行一段时间后CPU飙升,然后想查看是哪个线程占用. 折腾了一下午,终于定位到该线程. 下面我们通过两种方式定位到占用c ...

  8. 趣味编程故事|java进程占用cpu过高怎么办,别急我来帮你

    关注公众号"AI码师"领取2021最新面试资料一份 [主演] 运维小哥:小李 测试小姐姐:小红 开发人员:本色出演 [剧情] 在一个阳光明媚的清晨,原本还在睡梦中的我,被小李(运维 ...

  9. Windows服务器java.exe占用CPU过高问题分析及解决

    原文路径:https://blog.csdn.net/ningzuobei/article/details/48828915 最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,C ...

最新文章

  1. 看腾讯运维应对“18岁照片全民怀旧”事件的方案,你一定不后悔!
  2. 对实体 useSSL 的引用必须以 ';' 分隔符结尾。
  3. java 矩形重叠问题_两个矩形重叠的问题
  4. 多目标跟踪(MOT)领域近期值得读的几篇论文
  5. redis的操作 json对象实例
  6. SAP UI5 subscribe event实现原理
  7. Jenkins修改管理员密码
  8. python删除、替换字符串某字符后的字符串(删除字符串、替换字符串、strip、split、rstrip、lstrip、replace)
  9. jidnserror.wo.com.cn:8080错误解决方法
  10. HTML:雪碧图、高度塌陷和序号选择器
  11. Yii2中使用自定义的数据库
  12. Writing a good ISMAR paper
  13. a标签使用方法和跳转方式
  14. pdf epub reader 比较
  15. 推荐基于深度学习实时同步生成2D动画口型算法
  16. 一生践行“心正则字正”
  17. rtsp 报文转发_stp技术回顾和rstp经典笔记
  18. eclipse常用插件地址
  19. python实现双屏情况下,第二个屏播发视频
  20. 重装系统怎么找回文件数据恢复

热门文章

  1. memcache两种客户端比较
  2. 背景色透明,里面内容(图片、文字)不透明
  3. GNU make manual 翻译(三十一)
  4. 看到go语言简介想到的
  5. 运行初始化过程代码笔记
  6. 小白入门机器学习必备:编程语言环境介绍及搭建
  7. 果断收藏!156页PPT全景展现全球区块链发展(附完整版下载手册)
  8. LwIP移植准备工作
  9. qdialog 返回值_c – QDialog exec()并获取结果值
  10. 轻量级Java持久化框架,Hibernate完美助手,Minidao 1.6.2版本发布