一、 性能监控介绍

性能优化就是找到系统处理中的瓶颈以及去除这些的过程,多数测试人员相信看一些相关的” cook book” 就可以实现性能优化,通常通过对内核的一些配置是可以简单的解决问题,但并不适合每个环境,性能优化其实是对 OS 各子系统达到一种平衡的定义,这些子系统包括了:

这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题.比如:

  1. 大量的页调入请求导致内存队列的拥塞

  2. 网卡的大吞吐量可能导致更多的 CPU 开销

  3. 大量的 CPU 开销又会尝试更多的内存使用请求

  4. 大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO 问题

所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统出现问题,其实有可能是别的子系统导致的。

二、 确定应用类型

基于需要理解该从什么地方来入手优化瓶颈,首先重要的一点,就是理解并分析当前系统的特点,多数系统所跑的应用类型,主要为 2 种:

IO 范畴

在这个范畴中的应用,一般都是高负荷的内存使用以及存储系统,这实际上表示 IO 范畴的应用,就是一个大量数据处理的过程.IO 范畴的应用不对 CPU 以及网络发起更多请求 (除非类似 NAS 这样的网络存储硬件).IO 范畴的应用通常使用 CPU 资源都是为了产生 IO 请求以及进入到内核调度的 sleep 状态.通常数据库软件(mysql,oracle 等)被认为是 IO 范畴的应用类型.

CPU 范畴

在这个范畴中的应用,一般都是高负荷的 CPU 占用,CPU 范畴的应用,就是一个批量处理 CPU 请求以及数学计算的过程.通常 web server,mail server,以及其他类型服务被认为是 CPU 范畴的应用类型.

三、确定基准线统计

系统利用率情况,一般随管理员经验以及系统本身用途来决定.唯一要清楚的就是,系统优化希望达成什么效果,以及哪些方面是需要优化,还有参考值是什么?因此就建立一个基准线,这个统计数据必须是系统可用性能状态值,用来比较不可用性能状态值.

vmstat

procs                     memory     swap         io     system         cpu
r b   swpd   free   buff cache   si   so   bi   bo   in   cs us sy wa id
1  0 138592  17932 126272 214244    0    0     1    18  109    19  2  1  1 96
0  0 138592  17932 126272 214244    0    0     0     0  105    46  0  1  0 99
0  0 138592  17932 126272 214244    0    0     0     0  198    62 40 14  0 45
0  0 138592  17932 126272 214244    0    0     0     0  117    49  0  0  0 100
0  0 138592  17924 126272 214244    0    0     0   176  220   938  3  4 13 80
0  0 138592  17924 126272 214244    0    0     0     0  358  1522  8 17  0 75
1  0 138592  17924 126272 214244    0    0     0     0  368  1447  4 24  0 72
0  0 138592  17924 126272 214244    0    0     0     0  352  1277  9 12  0 79

vmstat

procs                     memory     swap         io     system         cpu
r b   swpd   free   buff cache   si   so   bi   bo   in   cs us sy wa id
2  0 145940  17752 118600 215592    0    1     1    18  109    19  2  1  1 96
2  0 145940  15856 118604 215652    0    0     0   468  789   108 86 14  0  0
3  0 146208  13884 118600 214640    0  360     0   360  498    71 91  9  0  0
2  0 146388  13764 118600 213788    0  340     0   340  672    41 87 13  0  0
2  0 147092  13788 118600 212452    0  740     0  1324  620    61 92  8  0  0
2  0 147360  13848 118600 211580    0  720     0   720  690    41 96  4  0  0
2  0 147912  13744 118192 210592    0  720     0   720  605    44 95  5  0  0
2  0 148452  13900 118192 209260    0  372     0   372  639    45 81 19  0  0
2  0 149132  13692 117824 208412    0  372     0   372  457    47 90 10  0  0

从上面第一个结果可看到,最后一列 (id) 表示的是空闲时间,我们可以看到,在基准线统计时,CPU 的空闲时间在 79% - 100%.在第二个结果可看到,系统处于 100% 的占用率以及没有空闲时间.从这个比较中,我们就可以确定是否是 CPU 使用率应该被优化.

四、安装监控工具

多数 linux 系统都有一堆标准的监控命令.这些命令从一开始就是 linux 的一部分,linux 则通过基本安装包以及额外包提供了其他监控工具,这些安装包多数都存在各个 linux 发布版本中.尽管还有其他更多的开源以及第三方监控软件,


↙↙↙阅读原文可查看相关链接,并与作者交流