服务器运行变慢异常后,一般都是从服务器整体情况、CPU、内存、磁盘、网络这几点去分析。
服务器整体情况
看整体的情况一般用top命令
分析:
09:15:29 — 当前系统时间
160 days, 12:55 — 系统已经运行了160天12小时55分钟(在这期间没有重启过)
1 users — 当前有1个用户登录系统
load average:0.41, 0.46, 0.56 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况
"cat /proc/cpuinfo"命令,可以查看CPU信息。"grep -c 'model name' /proc/cpuinfo"命令,直接返回CPU的总核心数。
当系统负荷(每个核心)持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷(每个核心)持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
当系统负荷(每个核心)达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。
Tasks — 任务(进程),系统现在共有316个进程,其中处于运行中的有1个,315个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
2.0% us — 用户空间占用CPU的百分比。
1.1% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
96.5% id — 空闲CPU百分比
0.1% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.3% si — 软中断(Software Interrupts)占用CPU的百分比
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)
物理内存:全部可用内存、已使用内存、空闲内存、缓冲内存。
交换内存:全部、已使用、空闲和缓冲交换空间。
CPU
可用top、vmstat工具查看,这说一下vmstat的用法。
vmstat -n 3 3 意思就是隔 3 秒取样一次,一共取样 2 次
其中主要关注 procs 和 cpu 这两个参数
procs :
r :运行和等待 CPU 时间的进程数,一般来说整个系统的运行队列不要超过总核数的 2 倍,要不然系统压力太大了
b : 等待资源的进程数,比如正在等待磁盘 IO ,网络 IO 这种
cpu :
us :用户进程消耗 CPU 时间百分比, us 值高的话,说明用户进程消耗 CPU 时间比较长,如果长期大于 50% 的话,那就说明程序还有需要优化的地方
sy :内核进程消耗的 CPU 时间百分比
us + sy 参考值为 80% ,如果大于 80% 的话,说明可能存在 CPU 不足
内存
top命令以上有提及,还有free -m命令也可以查看(单位:M)
空闲内存=total-used=free+buff/cache
磁盘
- 磁盘空间:df -h
- 磁盘IO:iostat (如果没有命令执行:yum install -y sysstat)
看其中这几个就可以了:
rkB/s :每秒读取数据量 kB ;
wkB/s :每秒写入数据量 kB ;
svctm :I/O 请求的平均服务时间,单位毫秒;
util :一秒中有百分之几的时间用于 I/O 操作,如果接近 100% 说明磁盘带宽跑满了,这个时候就要优化程序或者增加磁盘
网络IO
查看命令:sar -n DEV 3 2 (每隔3秒取样一次,共取2次)
其中:
IFACE :LAN 接口
rxpck/s :每秒钟接收的数据包
txpck/s :每秒钟发送的数据包
rxKB/s :每秒接收的数据量,单位 KByte
txKB/s :每秒发出的数据量,单位 KByte
rxcmp/s :每秒钟接收的压缩数据包
txcmp/s :每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包