java 问题排查工具

Linux命令

  • tail 最常用的tail -f
    tail -fn 200 aa.log 动态查看日志
  • grep
grep 'error' f.txt     #文件查找
grep 'error' f.txt cpf.txt #多文件查找

grep 'error' -A 3  test.log   #上匹配 在test文件下查找error并显示前3行内容
grep 'error' -B 3  test.log   #下匹配 在test文件下查找error并显示后3行内容
grep 'error' -C 3    #上下匹配,平时用这个就妥了  前后各3行
cat f.txt | grep -c 'SHOPBASE'

日志匹配到太多可以使用less
grep  -C 5  'defaultItem' item-war.log  | less
  • top
    top除了看一些基本信息之外,剩下的就是配合来查询vm的各种问题了
ps -ef | grep java
top -H -p pid 获得线程10进制转16进制后jstack去抓看这个线程到底在干啥
jstack pid

  • netstat
netstat -nat|awk  '{print $6}'|sort|uniq -c|sort -rn

注意close_wait偏高的情况
netstat -ant | grep 'close_wait' |wc -l
  • dmesg
    java线程无缘无故没有 可以使用下
dmesg|grep -i kill|less

找关键字oom_killer。找到的结果类似如下:
[6710782.021013] java invoked oom-killer: gfp_mask=0xd0, order=0, oom_adj=0, oom_scoe_adj=0
[6710782.070639] [<ffffffff81118898>] ? oom_kill_process+0x68/0x140 
[6710782.257588] Task in /LXC011175068174 killed as a result of limit of /LXC011175068174 
[6710784.698347] Memory cgroup out of memory: Kill process 215701 (java) score 854 or sacrifice child 
[6710784.707978] Killed process 215701, UID 679, (java) total-vm:11017300kB, anon-rss:7152432kB, file-rss:1232kB

以上表明,对应的java进程被系统的OOM Killer给干掉了,得分为854.
解释一下OOM killer(Out-Of-Memory killer),该机制会监控机器的内存资源消耗。当机器内存耗尽前,该机制会扫描所有的进程(按照一定规则计算,内存占用,时间等),挑选出得分最高的进程,然后杀死,从而保护机器。

一些工具

Arthas https://github.com/alibaba/arthas 很强大
btrace https://github.com/btraceio/btrace
eclipseMAT http://www.eclipse.org/mat/ 内存监控工具
Greys

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值