java 排查工具_java常用问题排查工具

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

1.ps -ef|grep java 或者 jps -l

得到进程pid

2.找到该进程内最耗cpu的线程,我一般使用:

top -Hp pid

443d082b2391aec0c00f4d1f30da6472.png

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值