假如你的Linux处事器溘然负载暴增,告警短信快发爆你的手机,如安在最短时间内找出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 PID | dump出内存快照 | -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是栈巨细 |