zoukankan      html  css  js  c++  java
  • java常用问题排查工具

    一:jstack找到最耗cpu的线程并定位代码

    1.ps -ef|grep java 或者 jps -l
    得到进程pid
    2.找到该进程内最耗cpu的线程,我一般使用:
    top -Hp pid
    3.cpu时间最长的就是pid为21742的线程,printf "x% " 21742,得到十六进制,为a
    4.使用jstack pid | grep a,打印进程的堆栈信息
     
    二:linux历史指标数据
    sar -A:报告所有的信息
    sar -u:cpu利用率
    sar 2 5:每隔2s显示5次,cpu的使用情况
     
    关于cpu消耗的问题,一般通过这两种方式都可以解决,复杂的话需要借助于perf。
     
    三:jstat和gc日志
    jstat -gc pid 1000:每1s钟打印堆间使用情况
    jstat -gcutil pid
    有些人习惯于查看gc log:

    -XX:+PrintGC 输出GC日志

    -XX:+PrintGCDetails 输出GC的详细日志

    -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)

    -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)

    -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息

    -Xloggc:../logs/gc.log 日志文件的输出路径

    我一般做如下的设置

     
    -XX:+PrintGCDetails -Xloggc:../logs/gc.log -XX:+PrintGCTimeStamps  
     
    四:jmap的使用
    jmap -dump:format=b,file=a.bin pid : 当需要dump内存查看的时候,内存dump出来以后,
    使用eclipse memory analyzer
    jmap -histo:live pid : 在需要强制执行fgc的时候
    有些人喜欢使用gcore,不过有些jdk版本支持的并不是很好。
     
    五:btrace工具的使用,没有具体研究,后面贴上来
     
  • 相关阅读:
    Xdebug
    单点登录
    一个Https网站发送Http的 ajax请求的解决方法
    js关闭微信浏览器页面
    标准的身份证验证(第18位校验码)
    Redis 更新(set) key值 会重置过期时间问题
    PHP 报错:Deprecated: Methods with the same name as their class will not be constructor...
    php防sql注入
    web开发原则
    fopen()函数
  • 原文地址:https://www.cnblogs.com/felixzh/p/9001062.html
Copyright © 2011-2022 走看看