Java 问题排查工具
程序出问题了,我们需要知道问题出在哪里,才可能修复问题
快速定位问题是一门学问
Linux命令类
less
操作和 vim 部分类似,性能好,打开几十 M 的文件也不会卡
比 tail 好用太多
/ 向下查找 n下一个 N上一个
?向上查找 n上一个 N下一个
f 向下翻页
b 向上翻页
基本够用了
grep
grep forest f.txt #文件查找
grep forest f.txt cpf.txt #多文件查找
grep 'log' /home/admin -r -n #目录下查找所有符合关键字的文件
cat f.txt | grep -i shopbase
grep 'shopbase' /home/admin -r -n --include *.{vm,java} #指定文件后缀
grep 'shopbase' /home/admin -r -n --exclude *.{vm,java} #反匹配
seq 10 | grep 5 -A 3 #上匹配
seq 10 | grep 5 -B 3 #下匹配
seq 10 | grep 5 -C 3 #上下匹配,平时用这个就妥了
cat f.txt | grep -c 'SHOPBASE'
find
find /home/admin /tmp /usr -name \*.log #多个目录去找
find . -iname \*.txt #大小写都匹配
find . -type d #当前目录下的所有子目录
find /usr -type l #当前目录下所有的符号链接
find /usr -type l -name "z*" -ls #符号链接的详细信息 eg:inode,目录
find /home/admin -size +250M #超过250M的文件,当然+改成-就是小于了
find /home/admin -type f -perm 777 -exec ls -l {} \; #按照权限查询文件
find /home/admin -atime -1 #1天内访问过的文件
find /home/admin -ctime -1 #1天内状态改变过的文件
find /home/admin -mtime -1 #1天内修改过的文件
find /home/admin -amin -1 #1分钟内访问过的文件
find /home/admin -cmin -1 #1分钟内状态改变过的文件
find /home/admin -mmin -1 #1分钟内修改过的文件
top、free、df、du
top 查看进程相关信息和基本负载情况
free 查看内存信息
df 查看磁盘信息
top、free、df linux三板斧
磁盘满了可以使用 du 来定位哪些文件夹过大,使用 find 可以查找大文件
神兵利器
Greys、arthas
Greys是杜琨的大作吧。说几个挺棒的功能(部分功能和btrace重合):
sc -df xxx: 输出当前类的详情,包括源码位置和classloader结构
另外相关联的是 arthas,他是基于Greys的,感兴趣的再移步
Java 自带命令
jps
我只用一条命令:
jps -mlvV
jstack
普通用法:
jstack 2815
jinfo
可看系统启动的参数,如下
jinfo -flags 2815
jmap
两个用途
- 查看堆的情况
jmap -heap 2815
- dump
jmap -dump:live,format=b,file=/tmp/heap2.bin 2815
或者
jmap -dump:format=b,file=/tmp/heap3.bin 2815
jstat
jstat参数众多,但是使用一个就够了
jstat -gcutil 2815 1000
Archives