java 生产环境调优排查总结

整机:Top

top命令后 M(以内存大小排列)P(以cpu大小排列) 1(cpu详细情况)q(退出)

详细解释

  • load average: 0.00, 0.01, 0.05
    1分钟、5分钟、15分钟的负载情况,如果3个值相加除以3乘以100% 高于60%说明系统负载过重

  • %CPU 进程占用百分比

  • %MEM — 进程使用的物理内存百分比

  • RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

  • VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

CPU: vmstat

一般vmstat工具是通过两个数字参数来完成的,第一个参数是采样的时间间隔单位是秒,第二个参数是采样的次数

  • procs

    • r: 运行和等待cpu时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不能超过总核数的2倍,否则代表系统压力过大
    • b: 等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
  • cpu

    • us:用户进程消耗CPU时间百分比,us值高,用户进程消耗cpu时间多,如果长期大于50%,优化程序;
    • sy: 内核进程消耗的CPU时间百分比;
    • us+sy参考值为80%,如果us+sy大于80%,说明可能存在CPU不足
    • id: 处于空闲的CPU百分比
    • wa: 系统等待IO的CPU时间百分比
    • st:来自于一个虚拟机偷取的CPU时间的百分比
  • 查看多核cpu核信息
    mpstat -P ALL2(两秒采样一次所有cpu信息)

  • 每个进程使用cpu的用量分解信息
    pidstat -u 1 -p 进程编号(每秒钟采样一次这个进程的cpu占用信息)

内存:free

  • free -m (查看可用内存 M为单位)
  • 内存情况
    • 内存充足: 应用程序可用内存/系统物理内存 > 70%
    • 内存不足,需要增加内存: 应用程序可用内存/系统物理内存 < 20%
    • 内存基本够用:20%<应用程序可用内存<70%
  • 详细查看
    pidstat -p 进程号 -r 采样间隔秒数 (每条采样一次这个进程的内存占用信息)

硬盘:df 硬盘使用量

  • df -h

磁盘IO: iostat

  • iostat -xdk 23

    • rkB/s 每秒读取数量量 kB;
    • wkB/s 每秒写入数量量 kB;
    • svctm I/O请求的平均服务时间,单位毫秒;
    • await I/O请求的平均等待时间,单位毫秒;值越小,性能越好;
    • util -秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘宽带跑满,需要优化程序或者增加磁盘;
    • rkB/s 、wkB/s根据系统应用不同会有不同的值,但有规律遵循;长期、超大数据读写,肯定不正常,需要优化程序读取;
    • svctm的值与await 的值很接近,表示几乎没有I/O等待,磁盘性能很好
    • 如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘。
  • 详细查看 对应进程的读写情况
    pidstat -d 采样间隔秒数 -p 进程号

网络IO:ifstat

  • 命令安装
wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz

tar xzvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure
make
make install
  • 查看
# 进入ifstat 目录
./ifstat

原文地址:https://www.cnblogs.com/zhucww/p/13815276.html