Linux服务器性能的日常命令和工具大全
概述
通过使用以下命令和工具,可以在1分钟内对系统资源使用情况有个大致的了解
其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法
下面我们来逐一介绍下这些命令和工具,有关这些命令和工具更多的参数和说明,请参照手册
1.uptime
$uptime
23:51:26up21:31,1user,loadaverage:30.02,26.43,19.02
这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是区域缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
上面例子中的输出,可以看见最近1分钟的平均负载非常高,且远高于最近15分钟负载,因此我们需要继续排查当前系统中有什么进程消耗了大量的资源。可以通过下文将会介绍的vmstat、mpstat等命令进一步排查。
2.dmesg | tail
$dmesg|tail
[1880957.563150]perlinvokedoom-killer:gfp_mask=0x280da,order=0,oom_score_adj=0
[...]
[1880957.563400]Outofmemory:Killprocess18694(perl)score246orsacrificechild
[1880957.563408]Killedprocess18694(perl)total-vm:1972392kB,anon-rss:1953348kB,file-rss:0kB
[2320864.954447]TCP:PossibleSYNfloodingonport7001.Droppingrequest.CheckSNMPcounters.
该命令会输出系统日志的最后10行。示例中的输出,可以看见一次内核的
oom kill和一次TCP丢包。这些日志可以帮助排查性能问题。千万不要忘了这一步。
3.vmstat— 虚拟内存统计
vmstat命令是用于显示虚拟内存、内核线程、磁盘、系统进程、I/O模块、中断、CPU活跃状态等更多信息
在默认的情况下,Linux系统是没有vmstat这个命令的,如果你要使用它
必须安装一个包名叫sysstat的程序包。命令格式常用用法如下:
$vmstat1
procs---------memory-------------swap-------io-----system--------cpu-----
rbswpdfreebuffcachesisobiboincsussyidwast
3400200889792737085918280005610961300
320020088992073708591860000592132844282981100
320020089011273708591860000095012154991000
32002008895687371259185600048119002459990000