监控环境常用的命令

生产环境服务器变慢

查看整机情况

  • 使用top命令查看CPU占用率、内存占用率以及第一行的load average
  • load average后的三个数字分别记录了一分钟、五分钟、以及十五分钟的系统平均负载
  • 还可以使用uptime命令,是系统性能命令的精简版

查看 CPU 情况

  • 使用vmstat -n 2 3代表每2秒采样一次,一共采样3次
  • procs中r代表运行和等待CPU时间片的进程数,整个系统的运行队列不应超过总核数的2倍,否则代表系统压力过大
    • b 代表等待资源如磁盘I/O,网络 I/O的进程数cpu中
    • us 代表用户进程消耗CPU时间百分比,如果长期大于50%要优化程序
    • sy 代表内核进程消耗CPU时间百分比us + sy参考值为80%,如果和大于80%,可能存在CPU不足
  • 使用mpstat -P ALL 2查看所有CPU核信息
  • 使用pidstat -u 1 -p pid查看每个进程使用CPU的用量分解信息

查看内存信息

  • 使用free -m来查看内存情况,单位为mb,应用程序可用内存/系统物理内存 应该在20%~70%
  • 使用pidstat -p pid -r采样间隔秒数

查看硬盘信息

  • 使用df -h查看磁盘IO
  • 使用iostat -xdk 2 3
    • rkB/s 每秒读取数据量
    • wkB/s 每秒写入数据量
    • svctm I/O请求的平均服务时间,单位为ms
    • util 一秒有百分之多少的时间用于I/O操作
  • 使用pidstat -d采样间隔秒 -p pid

查看网络IO

  • 使用ifstat采样间隔秒

CPU 占用过高的分析

  • 使用top命令找出CPU占比最高的进程
  • ps -ef或者jps进一步定位该进程信息定位到具体线程或代码
  • 使用ps -mp pid -o THREAD,tid,time
    • -m 显示所有线程
    • -p pid进程使用cpu的时间
    • -o 后是用户自定义格式将需要的线程id转换为16进制(英文小写格式)
  • jstack 进程id | grep tid -A60