常用监控命令小记

130 阅读2分钟

一些常用的监控命令,帮助排查性能问题

内存瓶颈

  • free 查看内存使用情况
  • vmstat 3 (间隔时间) 1000 (监控次数) 查看 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 等
  • sar -u 3 查看 CPU 总体消耗占比
  • sar -q 查看 CPU Load

网络瓶颈

  • ping $ip 测试网络性能
  • cat /var/log/messages 查看内核日志,检查是否丢包
  • watch more /proc/net/dev 用于定位丢包、错包情况(关注丢包总量)
  • sar -n SOCK 查看网络流量
  • netstat -na |grep ESTABLISHED |wc -l 查看 TCP 连接成功状态的数量
  • netstat -i 查看网络错误
  • ss stat ESTABLISHED |wc -l 统计并发连接数
  • traceroute $ip 查看路由经过的地址
  • dig $domain 查看域名解析日志
  • dmesg 查看系统内核日志

磁盘瓶颈

  • iostat -x -k -d 1 详细列出磁盘读写情况 (磁盘响应时间(AWait)应该 < 5ms)
  • iostat -x 查看系统各个磁盘的读写性能(重点看 AWait、IOWait 的 CPU 占比)
  • iotop 查看哪个进程在大量读取 I/O (一般通过iostat命令查看是否存在I/O瓶颈,在定位哪个进程在大量读写I/O)
  • df -hl 查看磁盘剩余空间
  • du -sh 查看磁盘使用了多少空间

应用瓶颈

  • ps -ef |grep node 查看某个进程的 ID
  • ps -ef |grep node |wc -l 查看特定进程的数量
  • cat.log |grep *Exception |wc -l 统计日志文件中包含特定异常的数量
  • jstack -l $pid 查看线程中是否存在死锁
  • awk '{print $8}' 2023-11-01-access_log |grep '302' |wc -l 统计日志中302的行数,$8这里第8列是状态码,可以按照实际情况更改
  • grep -v 'HTTP/1.1' '200' 取出非 200 响应码的 URL
  • find / -type f -name '*.log' | xargs grep 'error' 统计所有的日志文件中包含error字符的行
  • jstat -gc $pid 查看 GC 的信息
  • jstat -gcnew $pid 查看 young 区的内存使用情况
  • jsstat -gcold $pid 查看 old 区的内存使用情况
  • gcore $pid 导出完整的内存快照