负载是linux服务器的一个重要指标,直观了反应了服务器当前的状态。如果服务器负载过高,那么对服务器的操作将难以进行。
Linux服务器的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。
查看服务器负载有多种命令,w或者uptime都可以直接展示负载。
$ uptime
$ w
参数解释:
load average:分别指过去1分钟,5分钟,15分钟的负载平均值。
这两个命令只是单纯的反映出负载,linux提供了更为强大的top命令来查看服务器负载。
参数解释:
top行:展现出系统实时的状态,按q退出。
Tasks行:展示目前的进程总数及所处状态,要注意zombie,表示僵尸进程,不为0则表示有进程出现问题。
Cpu(s)行:展示当前CPU的状态,us表示用户进程占用CPU比例,sy表示内核进程占用CPU比例,id表示空闲CPU百分比,wa表示IO等待所占用的CPU时间的百分比。wa占用超过30%则表示IO压力很大。
Mem行:展示当前内存的状态,total是总的内存大小,userd是已使用的,free是剩余的,buffers是目录缓存。
Swap行:同Mem行,cached表示缓存,用户已打开的文件。如果Swap的used很高,则表示系统内存不足。
(由于本人服务器只有一颗cpu,所以此处只显示Cpu0,当服务器都多颗CPU时,就会Cpu0、Cpu1、Cpu2。。。依次显示)
一般而言,服务器的合理负载是CPU核数*2。也就是说对于8核的CPU,负载在16以内表明机器运行很稳定流畅。如果负载超过16了,就说明服务器的运行有一定的压力了。
在top命令下,按shift + "c",则将进程按照CPU使用率从大到小排序,按shift+"p",则将进程按照内存使用率从大到小排序,很容易能够定位出哪些服务占用了较高的CPU和内存。
仅仅有top命令是不够的,因为它仅能展示CPU和内存的使用情况,对于负载升高的另一重要原因——IO没有清晰明确的展示。linux提供了iostat命令,可以了解io的开销。
输入iostat -x 1 5命令,表示开始监控输入输出状态,-x表示显示所有参数信息,1表示每隔1秒监控一次,5表示共监控5次。
参数解释:
rsec/s表示读入
wsec/s表示每秒写入
(上面两个参数某一个特别高的时候就表示磁盘IO有很大压力)
util表示IO使用率(如果接近100%,说明IO满负荷运转)。