• java排查故障


                                                                              java排查故障
    top -Hp 31327

    #或top -p 31327,再按shift+h,-H则是线程开关,传入该参数的话,top界面会显示所有单独的线程列表)

    ##31327为java进程,拿到异常的线程id后,便可以将该进程的线程栈用下面的jstack命令全部输出:

    ##jstack 查看java 堆栈信息
    jstack 31327 |more

    "http-bio-18080-exec-11" daemon prio=10 tid=0x00007f50b028e800 nid=0x5757 runnable [0x00007f50936eb000]
    "http-bio-18080-exec-9" daemon prio=10 tid=0x00007f50b02a5000 nid=0x7a9d runnable [0x00007f512d6b5000]
    "http-bio-18080-exec-8" daemon prio=10 tid=0x00007f50b02a3800 nid=0x7a9b runnable [0x00007f512d9e3000]
    "http-bio-18080-exec-7" daemon prio=10 tid=0x00007f50b0011000 nid=0x7a99 runnable [0x00007f512dc88000]
    "http-bio-18080-exec-5" daemon
    ————————————————
    ##可以看到这些线程都一直挂在程序的某一行,多半是这里发生了死锁

    jps -vm | grep 31327 |more
    ##可以查看java进程的参数或者日志地址等.如果没有显示参数的话,可以cd到/proc/15195/cwd目录,该目录便是进程的运行目录

    jstat -gc 15195
    ##获得当前进程的gc状态 ,注:用jstat -gcutil $PID $INTERVAL $TIMES查询可能会更直接

    ##如果是PU(PermGen Usage)占用非常高,约为95.7%,是因为Perm代过高,且CMS GC无法回收掉Perm区内容,而导致频繁GC。
    ##CMS GC与普通的STW Full GC不同,不会暂停应用,但是会导致CPU使用率非常高。
    ##解决方法有两种:1)提高Perm区大小,-XX:PermSize -XX:MaxPermSize,2)关掉Perm区收集机制,取消-XX:+CMSClassUnloadingEnabled
    ————————————————

    ######## 线程状态: #################
    Deadlock – 死锁 
    Runnable – 执行中 
    Suspended – 暂停 
    Blocked – 阻塞 
    Parked – 停止 
    Waiting on condition – 等待资源 
    Waiting on monitor entry – 等待获取监视器 
    Object.wait() 或 TIMED_WAITING – 对象等待中
     

  • 相关阅读:
    汉诺塔问题
    两个有序链表序列的合并
    数列求和
    求集合数据的均方差
    [NOIP2014] 提高组 洛谷P1328 生活大爆炸版石头剪刀布
    [NOIP2014] 普及组
    洛谷P1726 上白泽慧音
    洛谷P1808 单词分类
    洛谷P1889 士兵站队
    洛谷P1288 取数游戏II
  • 原文地址:https://www.cnblogs.com/liulvzhong/p/java.html
Copyright © 2020-2023  润新知