java进程cpu过高问题定位 -欧洲杯足彩官网

`
hbxflihua
  • 浏览: 653122 次
  • 性别:
  • 来自: 杭州
最近访客
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 0)
    • ( 1)
    存档分类
    最新评论

    java进程cpu过高问题定位

      博客分类:
    • java

     

    1、top命令查看过高cpu的pid,命令:top

    [root@test-v3 bin]# top
    top - 16:44:22 up 173 days,  7:05,  2 users,  load average: 0.74, 0.71, 0.61
    tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
    cpu(s):  0.8%us,  0.4%sy,  0.0%ni, 98.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.7%st
    mem:   8061116k total,  7924856k used,   136260k free,   234996k buffers
    swap:  4194300k total,   383972k used,  3810328k free,  1191756k cached
      pid user      pr  ni  virt  res  shr s %cpu %mem    time   command                                                                         
      949 root      20   0 3576m 622m 9852 s  3.3  7.9   1194:48 java                                                                             
     5485 root      20   0 3327m 688m 9804 s  3.3  8.8   1769:07 java                                                                             
      980 root      20   0 3460m 692m  10m s  3.0  8.8   1834:53 java                                                                             
     1012 root      20   0 3393m 668m  10m s  3.0  8.5   1824:38 java                                                                             
    14017 root      20   0 2841m 393m 9564 s  2.7  5.0   2079:06 java                                                                             
     1042 root      20   0 3522m 725m   9m s  0.7  9.2 366:09.83 java

     

     

    2、定位线程,命令:ps -mp pid -o thread,tid,time | sort -rn

    [root@test-v3 bin]# ps -mp 949 -o thread,tid,time | sort -rn
    user     %cpu pri scnt wchan  user system   tid     time
    root      3.2  19    - futex_    -      - 31587 13:37:04
    root      2.5   -    - -         -      -     - 19:55:11
    root      0.1  19    - futex_    -      -  1849 01:14:46

     

     

    3、将线程id转为 16进制格式,命令:printf "%x\n" tid

    [root@test-v3 bin]# printf "%x\n" 31587
    7b63

     

     

    4、打印堆栈信息 ,命令:jstack pid |grep 十六进制格式tid -a 10

    其中-a 10表示查找到所在行的后10行。

    [root@test-v3 bin]# cd /usr/java/jdk1.7.0_80/bin
    [root@test-v3 bin]# ./jstack 949 |grep 7b63 -a 30
    "system clock" daemon prio=10 tid=0x00007f42904b0800 nid=0x7b63 runnable [0x00007f41f6084000]
       java.lang.thread.state: timed_waiting (parking)
    	at sun.misc.unsafe.park(native method)
    	- parking to wait for  <0x00000000eca553a8> (a java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobject)
    	at java.util.concurrent.locks.locksupport.parknanos(locksupport.java:226)
    	at java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobject.awaitnanos(abstractqueuedsynchronizer.java:2082)
    	at java.util.concurrent.scheduledthreadpoolexecutor$delayedworkqueue.take(scheduledthreadpoolexecutor.java:1090)
    	at java.util.concurrent.scheduledthreadpoolexecutor$delayedworkqueue.take(scheduledthreadpoolexecutor.java:807)
    	at java.util.concurrent.threadpoolexecutor.gettask(threadpoolexecutor.java:1068)
    	at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1130)
    	at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615)
    	at java.lang.thread.run(thread.java:745)
    "http-bio-8084-exec-10" daemon prio=10 tid=0x00007f422c011000 nid=0x210 waiting on condition [0x00007f41f6684000]
       java.lang.thread.state: waiting (parking)
    	at sun.misc.unsafe.park(native method)
    	- parking to wait for  <0x00000000ec542870> (a java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobject)
    	at java.util.concurrent.locks.locksupport.park(locksupport.java:186)
    	at java.util.concurrent.locks.abstractqueuedsynchronizer$conditionobject.await(abstractqueuedsynchronizer.java:2043)
    	at java.util.concurrent.linkedblockingqueue.take(linkedblockingqueue.java:442)
    	at org.apache.tomcat.util.threads.taskqueue.take(taskqueue.java:104)
    	at org.apache.tomcat.util.threads.taskqueue.take(taskqueue.java:32)
    	at java.util.concurrent.threadpoolexecutor.gettask(threadpoolexecutor.java:1068)
    	at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1130)
    	at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615)
    	at org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)
    	at java.lang.thread.run(thread.java:745)
    "http-bio-8084-exec-9" daemon prio=10 tid=0x00007f422c00f800 nid=0x7229 waiting on condition [0x00007f41f6785000]
       java.lang.thread.state: waiting (parking)
    	at sun.misc.unsafe.park(native method)

     

     

    分享到:
    |
    评论

    相关推荐

      因此对于doris来说其实主要的内存和cpu的使用主要集中在be,但是实际运行环境中偶尔也会出现有的同学线上fe环境出现内存使用过高的问题。并且这种情况可能只出现在线上特点的环境上,想要线下复现难度很大,这个是时候...

      因此对于doris来说其实主要的内存和cpu的使用主要集中在be,但是实际运行环境中偶尔也会出现有的同学线上fe环境出现内存使用过高的问题。并且这种情况可能只出现在线上特点的环境上,想要线下复现难度很大,这个是时候...

      java的分析工具有:1.visualvm,java应用程序性能分析和运行监控工具;...arthas是一个java诊断工具,其采用命令行交互模式,提供了tab键自动补全功能,且支持jdk 6 ,可以自动检测存在的java进程。

      功能说明一键式收集java进程的问题定位信息,包括:thread stack和heap dump等。监控java进程使用的cpu,当占用率过高时,自动收集top信息和thread stack。启动、停止、查询、导出飞行记录。使用方法将工具上传到...

      linux系统下,java进程使用cpu高,可利用此脚本抓取java进程的那个线程使用cpu高,集合thread dump,找到cpu高的线程编号来定位程序代码。使用方法 sh check_higcpu.sh $pid

       java局域网通信——飞鸽传书源代码,大家都知道vb版、vc版还有delphi版的飞鸽传书软件,但是java版的确实不多,因此这个java文件传输实例不可错过,java网络编程技能的提升很有帮助。 java聊天程序,包括服务端和...

      java 源码包 applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 calendar万年历 1个目标文件 ejb 模拟银行atm流程及操作源代码 6个目标文件,ejb来...

      说明:用于快速排查java的cpu性能问题(top us值过高),自动查出运行的java进程中消耗cpu多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。

      单线程问题定位: 根据进程pid列线程列表top -hp pid; jstack 打印占用资源较多线程代码位置 多线程问题定位:jstack快照所有线程;dump导出;使用jvisualvm分析dump文件 jvm分析:日志开启;gc日志打印;gc...

      memoryanalyzer可以分析java进程内存情况,比如每个对象占用内存情况,对象个数,占用百分比,可依此分析后定位到代码哪里不合理; jemter用作压力测试,就是测试系统能够支撑的并发数 jvisualvm是jdk自带工具,...

      apt提供了cpu利用率实时曲线图 多维度内存实时曲线图 方便竞品对比测试和定位内存泄露问题;支持进程内存构成分析 支持手工或超过阈值时自动转储 dump 详细堆内存对象信息 支持多进程 支持生成和导出常用格式的的...

      支持采集整个系统或指定进程(包括运行中的进程或直接启动的进程)的cpu cycles性能事件,能够快速定位到热点函数,包括应用程序函数、模块函数与内核函数,甚至能够定位到热点指令。 支持热点函数按照cpu核/...

      此命令通过结合linux操作系统的ps命令和jvm自带的jstack命令,查找java进程内cpu利用率最高的线程,一般适用于服务器负载较高的场景,并需要快速定位导致负载高的原因。

      这样的需求可以说很常见,比如定位死锁,定位一个不工作的线程到底卡在哪里,或者定位为什么 cpu 居高不下等等问题。 现在工作中我用的是 python,需要线上问题定位的缘故,也有了类似的需求——想要知道当前的 ...

      java性能定位工具,java -jar arthas-boot.jar启动后选择需要定位的进程序号,然后 最消耗cpu的线程 thread -n 3 收集 5 秒, 然后输出 top 5 的 cpu 消耗的线程 thread -n 5 -i 5000 trace 命令查看方法内各调用...

      多进程下为了解决内存地址覆盖的问题,需要记录每个程序的起始地址(基址寄存器),遇到与地址有关的指令,都要把地址加上基址寄存器的值,才是真实地址 分时系统 如果一个进程耗时很长,必须让出cpu去执行其他程序...

      � 采用了对有限内存、电池和 cpu 优化过的虚拟机 dalvik , android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

      那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾...

      共20个目标文件,cpu管理、内存管理、文件操作、进程监视管理、获取机子信息……等等。 10、android触摸界面产生气泡的源码 如题,共1个目标文件。 11、android读写文件源码 共1个目标文件,文件操作! 12、...

    global site tag (gtag.js) - google analytics
    网站地图