耗尽了CPU、RAM和磁盘I/O资源
# uptime
17:47:51 up 362 days, 23:56, 2 users, load average: 0.31, 0.44, 0.63
load average后面3个数字0.31、0.44和0.63分别代表了1分钟、5分钟和15分钟内机器的平均负载。
# top
这些数据会不断更新,所以可以看到系统实时信息,包括系统启动了多久、负载平均值、共有多少进程在运行、总共有多少内存、使用了多少内存、还剩多少内存,系统的进程列表以及他们占用的资源数量。
如果发现一个进程占用了全部CPU资源,想要终止这个进程,按下K键,然后输入想要终止的进程PID,系统提示该进程将会终止,按下Enter键。
# top -b 开启批处理模式
-n 控制退出top命令之前,刷新几次
例子:
1.想看到完整输出:
$ top -b -n 1
2.存入top_output文件中:
$ top -b -n 1 > top_output
3.查看top输出,同时写入文件:
$ top -b -n 1 | tee top_output
Cpu(s): 1.8%us, 0.2%sy, 0.0%ni, 97.7%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
us:用户CPU时间
运行非优雅的用户进程所占CPU时间的百分比(优雅,英文“nicing”,是指一个进程允许你根据其他进程更改优先级)。
sy:系统CPU时间
运行内核和内核进程所占CPU时间的百分比。
ni:优雅CPU时间
如果更改过一些进程的优先级,这个指标能够告诉你它们所占CPU时间的百分比。
id:CPU空闲时间
如果系统运行缓慢,但是这个指标特别高,那么你就可以确定问题的原因不是高CPU负载。
wa:I/O等待
代表CPU时间用在等待执行I/O操作所占的百分比。如果这个值很低,那么就能排除磁盘或者网络I/O的问题。
hi:硬件中断
CPU用于处理硬件中断所占时间的百分比。
si:软件中断
CPU用于处理软件中断所占时间的百分比。
st:流逝的时间
如果你正在运行虚拟机,这个度量指标会告诉你虚拟机中执行的其他任务所占CPU时间的百分比。
当系统运行缓慢的时候:
首先要观察的是I/O等待时间,排除磁盘I/O问题。如果I/O等待时间很高,那么去找I/O等待时间高的原因;
如果I/O等待时间很低,那么看CPU空闲时间百分比;
如果I/O等待和CPU空闲时间百分比都低,那么就会看到用户时间百分比非常高,确定导致用户时间百分比高的原因。
如果I/O等待时间百分比低,CPU空闲时间百分比高,那么系统缓慢就不是CPU资源的原因,可能意味着应该查看网络问题或者web服务器的问题,再或者查看MySQL查询缓慢的问题等。
1.解决高用户时间问题:
top命令查看,终止大量使用CPU资源进程(按下K键,输入对应进程PID)。
2.解决内存不足的问题:
保持top的打开状态,然后按下M 键,会让所有进程按照RAM的使用率来排序。
注意%MEM这一列,前几个进程占用了大量RAM,可以终止它们,或者根据程序,通过专门的故障排除法来寻找是什么原因导致这些进程占用了大量RAM。
注意:top命令开启下,按f键进入选择排序类的界面
3.解决高I/O等待问题:
当I/O等待时间百分比很高时,首先查看机器是否在大量使用交换空间。硬盘操作速度远远低于RAM,所以当系统内存耗尽,开始使用交换空间的时候,系统性能会受到严重影响。
所以第一步检查内存是否耗尽,如果是,则先解决这个问题。
如果还有大量可用的RAM,则要寻找是哪个进程占用了大部分I/O操作。
使用iostat
tps
这个值列出了设备每秒的传输量。“传输”(Transfer)是向设备发送I/O请求的另一种表达方式。
Blk_read/s
表示每秒从设备读取的数据量。
Blk_wrtn/s
表示每秒向设备写入的数据量。
Blk_read
表示从设备读取的数据总量。
Blk_wrtn
表示写入设备的数据总量