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%\n" 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工具的使用,没有具体研究,后面贴上来
     
    六:如何查看堆外内存?
     
     
    lixnux常用的命令:
    find / -name filename.txt : 根据名称查找/目录下的filename.txt文件
    ls -l | grep 'jar' : 查找当前目录所有jar文件
    netstat -tln|grep 8080 :查看8080端口的使用情况
    pwdx pid:查看属于哪个程序
     
    数据库一些常用的命令:
    mysql -uroot -pabc123
    use xgame
    mysqldump -uroot -pabc123 xgame > /root/mysql_tmp_backup.sql;
    source /root/mysql_tmp/backup.sql;
     
    linux下软件安装(以安装java环境为例):
    删除linux自带的openjdk
    java -version
    rpm -qa|grep java
    java -version
    yum -y remove java-1.8.0-open jdk.x86_64
    rmp -ivh jdk-xxxx.rpm
    vi /etc/profile
    ls -s /usr/java/jdk/bin/java/sbin/java
    port JAVA_HOME=/usr/java/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 相关阅读:
    [React] Improve developer experience for accessing context with a custom React hook
    [CSS] Create a self-centering, full-width stripe with CSS Grid
    android之使用mvn构建创造项目步骤
    Android读取Excel文件
    Android之RAS加密算法测试
    android 内存溢出oom错误的一些小见解
    Android之在应用程序内部关注某人的微信
    Android之使用picker打开相应的app
    MAC之查看日历
    MAC之tar解压与压缩打包命令
  • 原文地址:https://www.cnblogs.com/cr1719/p/6420476.html
Copyright © 2011-2022 走看看