线上问题排查

1.磁盘空间不足问题

先从总体查看磁盘状态:df -h

找到不足的磁盘,进入目录查看具体文件大小:du -sh *(ls -lh只能看文件大小,文件夹的看不出来)


2.cpu和内存使用率过高问题

查看所有进程:top

查看单个进程:top -p pid

查看单个进程的线程:top -p pid -H

只看内存使用情况:free -h

只看交换区:swapon


3.网络延迟

查看所有连接中的 socket:netstat -a

查看所有 tcp 连接的信息,包括进程号: netstat -tnpa

得到进程号后就好说了配合 top 命令,ps -ef 命令,查看相关进程信息

实时流量数据:iftop -P


4.java进程问题

查看java进程号:jps

查看堆内存设置与当前使用情况:jmap -heap pid

统计当前堆内对象使用情况:jmap -histo:live pid

dump堆快照文件,后续用mat等工具分析:jmap -dump:format=b,file=heapdump.phrof pid

查看 jvm 线程运行信息(推荐一个分析stack文件的网站fastthread.io):jstack

直接用第三方工具也很方便,推荐阿里的arthas


5.一些无法本地debug的调式技巧

对于一些线上问题不方便本地调试,这里推荐一个阿里的工具:arthas

  • watch 命令可以实时观察一个方法的入参和出参。
  • trace 命令可以跟踪某个方法的耗时,而且可以深入这个方法所调用的方法的各个耗时。
  • dashboard 全局监控
  • thread 查看所有线程信息,包括状态和 CPU 使用率
  • thread -b 甚至可以直接定位到死锁信息
  • jad 命令进行反编译

甚至可以代码热替换,更多详细功能可以参考arthas官网的文档

posted @ 2022-07-06 11:30  OUYM  阅读(31)  评论(0编辑  收藏  举报