当站点响应慢的时候一般会怀疑服务器是不是有问题,而服务器也是有很多因素(CPU、内存、磁盘I/O等等)组成,在这里我们使用sar命令进行初期排查。
sar命令是可以显示LoadAverage、CPU使用率及磁盘I/O信息的命令,更重要的是可以查看过去的信息。
安装sar
首先查看服务器有没有安装sysstat。
# rpm -qa | grep sysstat sysstat-9.0.4-22.el6.x86_64
如果什么都没有显示的话,yum安装sysstat。安装sysstat之后,信息采集就会自动开始。
# yum install sysstat
修改sar命令采集信息的间隔
修改/etc/cron.d/sysstat文件。
# Run system activity accounting tool every 10 minutes */1 * * * * root /usr/lib64/sa/sa1 1 1 ~ 省略 ~
默认采集信息间隔是10分钟’*/10’,在这里改为修改为1分钟’*/1’。
常用选项
常用命令 | 内容 |
---|---|
sar -q | LoadAverage |
sar -u | CPU使用率 |
sar -b | 磁盘I/O |
sar -r | 内存及交换分区使用率 |
sar -s time | 指定开始时间 |
sar -e time | 指定终止时间 |
sar -f /var/log/sa/sa01 | 指定过去的性能文件 |
1. -q选项确认LoadAverage
# sar -q -s 23:25:00 Linux 2.6.32-358.6.2.el6.x86_64 (awspack) 07/07/2015 _x86_64_ (16 CPU) 11:25:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 11:26:01 PM 3 600 2.27 1.87 1.85 11:27:01 PM 4 602 1.75 1.80 1.83 11:28:01 PM 1 602 1.36 1.64 1.77 Average: 3 601 1.79 1.77 1.82
ldavg-x是表示过去x分钟的LoadAverage。
而当LoadAverage过高(CPU内核数的2倍)的时候,一般是
2. -u选项确认CPU使用率
# sar -u -s 23:35:00 Linux 2.6.32-358.6.2.el6.x86_64 (awspack) 07/07/2015 _x86_64_ (16 CPU) 11:35:01 PM CPU %user %nice %system %iowait %steal %idle 11:36:01 PM all 10.52 0.00 0.82 0.58 0.00 88.08 11:37:01 PM all 10.10 0.00 0.85 0.60 0.00 88.46 11:38:01 PM all 16.31 0.00 1.70 0.62 0.00 81.37 11:39:01 PM all 13.32 0.00 1.17 0.72 0.00 84.79 11:40:01 PM all 9.62 0.00 0.83 0.69 0.00 88.86 11:41:01 PM all 7.92 0.00 0.66 0.68 0.00 90.74 11:42:01 PM all 11.43 0.00 0.96 0.78 0.00 86.84 11:43:01 PM all 11.39 0.00 0.91 0.86 0.00 86.83 Average: all 11.32 0.00 0.99 0.69 0.00 87.00
sar -u显示的是CPU在各种模式下占用的比例。
模式 | 内容 |
---|---|
%user | 用户模式(一般是应用程序)下的CPU使用率 |
%nice | 一般为0 |
%system | 内核模式(OS等)下的CPU使用率 |
%iowait | 等待磁盘的I/O完成 |
%steal | 一般为0 |
%idle | CPU的空闲比例(等待磁盘I/O时间除外) |
从sar -u结果我们可以做如下简单的判断
- %system一般不会超过10%,超过10%时可以怀疑内存不足或者LoadAverage过高
- %user过高时,可使用top命令查看哪个进程占用的CPU使用率过高
- %iowait过高是磁盘I/O出现了瓶颈
3. -b选项查看磁盘读写
# sar -b -s 00:00:00 Linux 2.6.32-358.6.2.el6.x86_64 (awspack) 07/08/2015 _x86_64_ (16 CPU) 12:00:01 AM tps rtps wtps bread/s bwrtn/s 12:01:02 AM 112.79 0.00 112.79 0.00 957.00 12:02:01 AM 99.32 0.00 99.32 0.00 813.04 12:03:01 AM 106.23 0.00 106.23 0.00 865.49 12:04:01 AM 119.21 0.00 119.21 0.00 975.00 12:05:01 AM 110.04 0.00 110.04 0.00 897.71 12:06:01 AM 97.66 0.00 97.66 0.00 864.40 12:07:01 AM 107.89 0.00 107.89 0.00 926.72 12:08:01 AM 94.22 0.00 94.22 0.00 768.58 12:09:01 AM 89.11 0.00 89.11 0.00 732.24 12:10:01 AM 85.54 0.00 85.54 0.00 694.89 Average: 102.21 0.00 102.21 0.00 849.56
项目 | 内容 |
---|---|
tps | I/O请求的总次数/秒 |
rtps | 读取请求的总次数/秒 |
wtps | 写入请求的总次数/秒 |
bread/s | Block单位的读取请求的总次数/秒 |
bwrtn/s | Block单位的写入请求的总次数/秒 |
4. -r选项确认内存及交换分区的使用情况
# sar -r -s 00:10:00 Linux 2.6.32-358.6.2.el6.x86_64 (awspack) 07/08/2015 _x86_64_ (16 CPU) 12:10:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 12:11:01 AM 4151820 12165284 74.56 313516 5964312 5474348 33.55 12:12:01 AM 4148072 12169032 74.58 313516 5964364 5473416 33.54 12:13:01 AM 4140396 12176708 74.63 313516 5964448 5476452 33.56 12:14:01 AM 4136844 12180260 74.65 313516 5964512 5475960 33.56 12:15:01 AM 4100348 12216756 74.87 313516 5964564 5562188 34.09 12:16:01 AM 4112976 12204128 74.79 313516 5964656 5541804 33.96 12:17:01 AM 4136260 12180844 74.65 313516 5964816 5480288 33.59 Average: 4132388 12184716 74.67 313516 5964525 5497779 33.69
通过以下项目查看内存及交换分区的使用情况。
项目 | 内容 |
---|---|
kbmemfree | 内存可用量(kb) |
kbmemused | 内存使用量(kb) |
%memused | 内存使用率 |
kbswpfree | 交换分区的可用量(kb) |
kbswpused | 交换分区的使用量(kb) |
%swpused | 交换分区的使用率 |
5. 查看过去的性能信息
在/var/log/sa目录下有过去的性能信息,可通过指定文件及指定时间查看信息。
以下命令查看当月7日的23:50以后的CPU使用情况。
# sar -u -s 23:50:00 -f /var/log/sa/sa07 Linux 2.6.32-358.6.2.el6.x86_64 (awspack) 07/07/2015 _x86_64_ (16 CPU) 11:50:01 PM CPU %user %nice %system %iowait %steal %idle 11:51:01 PM all 13.25 0.00 1.03 1.06 0.00 84.66 11:52:01 PM all 13.58 0.00 1.05 1.03 0.00 84.35 11:53:01 PM all 13.89 0.00 1.17 1.08 0.00 83.86 11:54:01 PM all 10.46 0.00 0.87 1.08 0.00 87.59 11:55:01 PM all 10.59 0.00 0.86 1.01 0.00 87.54 11:56:01 PM all 9.90 0.00 0.85 0.96 0.00 88.29 11:57:01 PM all 13.78 0.00 1.11 1.04 0.00 84.06 11:58:01 PM all 9.75 0.00 0.82 0.69 0.00 88.74 11:59:01 PM all 4.91 0.00 0.40 0.66 0.00 94.04 Average: all 11.12 0.00 0.91 0.96 0.00 87.02
结语
当我们的网站或者站点响应慢的时候,可使用sar命令进行初期的排查,作为今后调查方向的依据。
需要注意的是,当访问量超出系统承载量的时,出现的CPU过高、内存过高甚至溢出等情况,需要结合访问量分析进行排查。