Linux 实例系统总体负载查询及分析
本文主要对 Linux 实例总体负载情况的查询和分析进行说明。
Linux 实例总体负载的查询及分析
Linux 实例如果总体负载过高,可能会引发死机或卡顿等异常。可以参阅如下步骤进行整体排查。
- 
检查服务器进程与服务否占用过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机。 
- 
检查 /var/spool/cron等系统配置中是否有 cron(计划任务)在对应时间段内执行。
- 
检查 Web 服务器的参数是否超过了服务器的性能,比如最大连接数过高等。 
- 
检查进程数是否非常高,导致服务瘫痪,机器假死。 
- 
查看系统日志中是否有异常记录。 
- 
检查磁盘是否有坏块。 
- 
内核消耗过大,查看是否有瞬间资源占用过大的进程或服务。 
- 
查看是否有异常进程,是否存在被攻击或入侵症状。 
使用 sar 工具查看 Linux 实例各项资源使用情况
sar 是 System Activity Reporter (系统活动情况报告)的缩写。sar 工具对系统状态进行取样后,通过计算数据和比例来表达系统当前的运行状态。其特点是可以连续对系统取样,获得大量的取样数据。其取样数据和分析结果可以存入文件,所需的负载很小。
sar 是 Linux 系统中较为全面的性能分析工具,可以从多个方面对系统的活动进行监控和报告,包括文件读写情况、系统调用使用情况、串口、CPU 效率、内存使用情况、进程活动及 IPC 有关的活动情况等等。
安装 sar 工具
如果您的系统中默认未安装 sar 工具,可参考如下步骤进行安装。
- 
登录 Linux 实例,执行以下命令,安装 sar 工具。 yum install sysstat
- 
执行以下命令,启动服务。 /etc/init.d/sysstat start
查看 CPU 负载
执行以下命令,查看 CPU 负载。
sar -u 1 5系统显示类似如下。
Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
10:16:35 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:16:36 AM     all     14.14      0.00      1.01      0.00      0.00     84.85
10:16:37 AM     all     14.14      0.00      0.00      1.01      0.00     84.85
10:16:38 AM     all      0.00      0.00      1.01      0.00      0.00     98.99
10:16:39 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
10:16:40 AM     all      1.00      0.00      0.00      0.00      0.00     99.00
Average:        all      5.86      0.00      0.40      0.20      0.00     93.54| 说明 | 
|---|
| 
 | 
查看平均负载
执行以下命令,查看平均负载。
sar -q 1 60系统显示类似如下。
sar -q 1 6Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
10:23:13 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:23:14 AM         0       142      0.00      0.01      0.05         0
10:23:15 AM         0       142      0.00      0.01      0.05         0
10:23:16 AM         0       142      0.00      0.01      0.05         0
10:23:17 AM         0       142      0.00      0.01      0.05         0
10:23:18 AM         0       142      0.00      0.01      0.05         0
10:23:19 AM         0       142      0.00      0.01      0.05         0
Average:            0       142      0.00      0.01      0.05         0| 说明 | 
|---|
| 
 | 
查看内存负载
执行以下命令,查看内存负载。
sar -r 1 3系统显示类似如下。
sar -r 1 3
Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
10:27:34 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive  kbinact  kbdirty
10:27:35 AM    275992    740664     72.85    181552    315340    362052     35.61    471216   115828       60
10:27:36 AM    276024    740632     72.85    181552    315340    362052     35.61    471220   115828       64
10:27:37 AM    276024    740632     72.85    181552    315340    362052     35.61    471220   115828       64
Average:       276013    740643     72.85    181552    315340    362052     35.61    471219   115828       63| 说明 | 
|---|
| 
 | 
查看页面交换发生的状况
执行命令,查看内存负载。
sar -W 1 3系统显示类似如下。
Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ) 07/04/2016 _x86_64 (1 CPU)
10:28:59 AM pswpin/s pswpout/s
10:29:00 AM 0.00 0.00
10:29:01 AM 0.00 0.00
10:29:02 AM 0.00 0.00
Average: 0.00 0.00| 说明 | 
|---|
| 
 | 
sar 命令的参数说明如下,注意区分大小写。
- 
-A:汇总所有的报告 
- 
-a:报告文件读写使用情况 
- 
-B:报告附加的缓存的使用情况 
- 
-b:报告缓存的使用情况 
- 
-c:报告系统调用的使用情况 
- 
-d:报告磁盘的使用情况 
- 
-g:报告串口的使用情况 
- 
-h:报告关于 buffer 使用的统计数据 
- 
-m:报告 IPC 消息队列和信号量的使用情况 
- 
-n:报告命名 cache 的使用情况 
- 
-p:报告调页活动的使用情况 
- 
-q:报告运行队列和交换队列的平均长度 
- 
-R:报告进程的活动情况 
- 
-r:报告没有使用的内存页面和硬盘块 
- 
-u:报告 CPU 的利用率 
- 
-v:报告进程、i 节点、文件和锁表状态 
- 
-w:报告系统交换活动状况 
- 
-y:报告 TTY 设备活动状况 
使用 htop 查看系统负载情况
htop 是 Linux 系统中的一个互动进程查看器,可以让用户进行交互式操作,可横向或纵向滚动浏览进程列表,支持鼠标操作。用户可以安装 htop,监控服务器的负载。
- 
Linux 系统默认不存在 htop 工具,可以通过 yum install htop命令进行安装。
- 
安装成功后,可以在命令行执行 htop命令启动 htop 监控工具。
- 
htop 启动后的界面如下图所示。返回结果左侧显示 CPU、内存、Swap 交换区的使用情况,右侧显示任务、负载、开机时间,下面的主体部分就是进程实时状况,底端是 F1 到 F10 的功能键。   - 
F1 到 F10 功能键的说明如下。 功能键 对应功能 说明 F1 Invoke htop Help 查看 htop 帮助说明 F2 Htop Setup Menu htop 配置菜单 F3 Search for a Process 搜索进程 F4 Incremental process filtering 进程过滤器 F5 Tree View 显示树形结构 F6 Sort by a column 选择排序方式 F7 Nice - (change priority) 可减少 nice 值,用于提高对应进程的优先级 F8 Nice + (change priority) 可增加 nice 值,用于降低对应进程的优先级 F9 Kill a Process 结束指定进程 F10 Quit htop 结束 htop 
- 
在 htop 界面,用户可以通过鼠标单击相关进程、列、功能键,也可以通过上下键或 PgUP、PgDn 键选定想要的进程,左右键或 Home、End 键移动字段,常用的快捷键如下所示。 - 
Space:标记或取消标记一个或多个进程。 
- 
s:选择某一进程,按 s 键后,用 strace 追踪进程的系统调用。 
- 
l:显示进程打开的文件。如果安装了 lsof,按此键可以显示进程所打开的文件。 
- 
M:按 Memory 使用率排序。 
- 
P:按 CPU 使用率排序。 
- 
T:按 Time+ 使用率排序。 
- 
F:跟踪进程,如果排序顺序引起选定的进程在列表上随意移动,让选定条跟随该进程。这对监视一个进程非常有用。这种方式,用户可以让特定进程在屏幕上一直可见。使用方向键会停止该功能。 
- 
K:显示或隐藏内核线程。 
- 
H:显示或隐藏用户线程。 
- 
Ctrl 和 L:刷新界面 
 
- 
- 
鼠标单击 Help 或者按 F1 ,可以显示自带帮助信息。   
- 
鼠标单击 Setup 或者按 F2,可以进入 htop 配置页面。例如最后一项的设定是调整 Columns(数据列)的显示,用于自定义 htop 进程列表中可以看到哪些字段的数据及信息。   
- 
鼠标单击 Search 或者按 F3 或者输入 /, 然后可以通过输入进程名进行搜索,例如搜索 ssh 进程。  
- 
输入 t或按 F5,显示树形结构,与 pstree 显示效果类似,可以看到所有程序树状执行的结构。  
- 
按 F6 可以选择依照哪一列来排序,最常用的排序内容就是 CPU 和 Memory。   
 
-