Linux服务器负载暴增和故障排查完全指南

类别监控命令描述备注
内存瓶颈free查看内存使用 
 vmstat 3(间隔时间) 100(监控次数)查看swap in/out详细定位是否存在性能瓶颈推荐使用
 sar -r 3和free命令类似,查看内存的使用情况,但是不包含swap的情况 
cpu瓶颈top -H按照cpu消耗高低进行排序 
 ps -Lp 进程号 cu查看某个进程的cpu消耗排序 
 cat /proc/cpuinfo |grep ‘processor’|wc -l查看cpu核数 
 top查看cpu总体消耗,包括分项消耗如user,system,idle,nice等消耗 
 top 然后shift+h:显示java线程,然后shift+M:按照内存使用进行排序;shift+P:按照cpu时间排序;shift+T:按照cpu累计使用时间排序

多核cpu,按“1”进入top视图

  
 sar -u 3(间隔时间)查看cpu总体消耗占比 
 sar -q查看cpu load 
 top -b -n 1 | awk ‘{if (NR<=7)print;else if($8==”D”){print;count++}}END{print “Total status D:”count}’计算在cpu load里面的uninterruptedsleep的任务数量uninterruptedsleep的任务会被计入cpu load,如磁盘堵塞
网络瓶颈cat /var/log/messages查看内核日志,查看是否丢包 
 watch more /proc/net/dev用于定位丢包,错包情况,以便看网络瓶颈重点关注drop(包被丢弃)和网络包传送的总量,不要超过网络上限
 sar -n SOCK查看网络流量 
 netstat -na|grep ESTABLISHED|wc -l查看tcp连接成功状态的数量此命令特别消耗cpu,不适合进行长时间监控数据收集
 netstat -na|awk’{print $6}’|sort |uniq -c |sort -nr看tcp各个状态数量 
 netstat -i查看网络错误 
 ss state ESTABLISHED| wc -l更高效地统计tcp连接状态为ESTABLISHED的数量 
 cat /proc/net/snmp查看和分析240秒内网络包量,流量,错包,丢包用于计算重传率tcpetr=RetransSegs/OutSegs
 ping ip测试网络性能 
 traceroute ip查看路由经过的地址常用于定位网络在各个路由区段的耗时
 dig 域名查看域名解析地址 
 dmesg查看系统内核日志 
磁盘瓶颈iostat -x -k -d 1详细列出磁盘的读写情况当看到I/O等待时间所占CPU时间的比重很高的时候,首先要检查的就是机器是否正在大量使用交换空间,同时关注iowait占比cpu的消耗是否很大,如果大说明磁盘存在大的瓶颈,同时关注await,表示磁盘的响应时间以便小于5ms
 iostat -x查看系统各个磁盘的读写性能重点关注await和iowait的cpu占比
 iotop查看哪个进程在大量读取IO一般先通过iostat查看是否存在io瓶颈,再定位哪个进程在大量读取IO
 df -hl查看磁盘剩余空间 
 du -sh查看磁盘使用了多少空间 
应用瓶颈ps -ef | grep java查看某个进程的id号 
 ps -ef | grep httpd| wc -l查看特定进程的数量 
 cat ***.log | grep ***Exception | wc -l统计日志文件中包含特定异常数量 
 jstack -l pid用于查看线程是否存在死锁 
 awk’{print $8}’ 2017-05-22-access_log|egrep ’301|302′| wc -l统计log中301、302状态码的行数,$8表示第八列是状态码,可以根据实际情况更改常用于应用故障定位
 grep ‘wholesaleProductDetailNew’ cookie_log | awk ‘{if($10==”200″)}’print}’ | awk ‘print $12′ | more打印包含特定数据的12列数据 
 grep “2017:05:22″ cookielog | awk ‘($12>0.3){print $12 “–” $8}’ | sort > 目录地址对apache或者nginx访问log进行响应时间排序,$12表示cookie log中的12列表示响应时间用于排查是否是由于是某些访问超长造成整体的RT变长
 grep -v ‘HTTP/1.1″ 200′取出非200响应码的URL 
 pgm -A -f 应用集群名称 “grep “’301 ‘ log文件地址 | wc -l查看整个集群的log中301状态码的数量 
 ps -efL | grep [PID] | wc -l查看某个进程创建的线程数 
 find / -type f -name “*.log” | xargs grep “ERROR”统计所有的log文件中,包含Error字符的行这个在排查问题过程中比较有用
 jstat -gc [pid]查看gc情况 
 jstat -gcnew [pid]查看young区的内存使用情况,包括MTT(最大交互次数就被交换到old区),TT是目前已经交换的次数 
 jstat -gcold查看old区的内存使用情况 
 jmap -J-d64 -dump:format=b,file=dump.bin PIDdump出内存快照-J-d64防止jmap导致虚拟机crash(jdk6有bug)
 -XX:+HeapDumpOnOutOfMemeryError在java启动时加入,当出现内存溢出时,存储内存快照 
 jmap -histo [pid]按照对象内存大小排序注意会导致full gc
 gcore [pid]导出完成的内存快照通常和jmap -permstat /opt/**/java gcore.bin 一起使用,将core dump转换成heap dump
 -XX:HeapDumpPath=/home/logs -Xloggc:/home/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps在Java启动参数中加入,打印gc日志 
 -server -Xms4000m -Xmx4000m -Xmn1500m -Xss256k -XX:PermSize=340m -XX:MaxPermSize=340m -XX:+UseConcMarkSweepGC调整JVM堆大小xss是栈大小
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值