您的位置:首页 > 运维架构 > Nginx

Linux 系统 修改Nginx、Apache的header伪装服务器

2013-04-17 10:33 316 查看
作者:Peak Wong出处:IT专家网2008-05-08 17:21

本文对cpu性能的命令作了详细介绍,并给出了对于系统cpu监控的建议。

  1、vmstat

  使用vmstat来进行性能评估,该命令可获得关于系统各种资源之间的相关性能的简要信息。当然我们也主要用它来看CPU的一个负载情况。

  下面是我们调用vmstat命令的一个输出结果:

  $vmstat 1 2

  System configuration: lcpu=16 mem=23552MB

  kthr memory page faults cpu

  ----- ----------- ------------------------ ----------------- -----------

  r b avm fre re pi po fr sr cy in sy cs us sy id wa

  0 0 3091988 2741152 0 0 0 0 0 0 1849 26129 4907 8 1 88 3

  0 0 3091989 2741151 0 0 0 0 0 0 2527 32013 6561 15 2 77 6
  对上面的命令解释如下:

  Kthr段显示内容

  ¨ r列表示可运行的内核线程平均数目,包括正在运行的线程和等待 CPU 的线程。如果这个数字大于 CPU 的数目,则表明有线程需要等待CPU。

  ¨ b列表示处在非中断睡眠状态的进程数。包括正在等待文件系统 I/O 的线程,或由于内存装入控制而被挂起的线程。

  Memory段显示内容

  ¨ avm列表示活动虚拟内存的页面数,每页一般4KB

  ¨ fre空闲的页面数,每页一般4KB

  Page段显示内容

  ¨ re –该列无效

  ¨ pi 从磁盘交换到内存的交换页(调页空间)数量,4KB/页。调页空间是驻留在硬盘上的虚拟内存的一部分。当内存使用过量时,会将溢出的工作组页面存储到调页空间中(窃取页)。当进程访问一个窃取页时,就产生了一个缺页故障,而这一页页必须从调页空间中读入到内存中。

  ¨ po 从内存交换到磁盘的交换页数量,4KB/页。如果窃取的工作也在调页空间中不存在或者已经作了修改,则写入调页空间中。如果不被再次访问,它会留在调度空间中直到进程终止或者放弃空间。

  ¨ fr 根据页面替换算法每秒释放的页数。当VMM页面替换例程扫描页面帧表(Page Frame Table,PFT)时,它会根据一些条件选取需要窃取的页面以补充空闲列表。该条件中包含工作页面和计算页面,释放的页面中,计算页面不产生I/O,工作页面如果数据没有发生修改,也不需要写回磁盘,也不会产生I/O。

  ¨ sr 根据页面替换算法每秒所检查的页数。sr值比fr值高的越多,说明替换算法要查找可以替换的页面就越困难。

  ¨ cy 每秒页面替换代码扫描了PFT多少次。因为增加空闲列表达到maxfree值,不一定需要完全扫描PFT表,而所有vmstat输出都为整数,所以通常cy列值为0。

  Faults段显示内容(其实这段内容不需太多关注)

  ¨ in 在该时间间隔中观测到的每秒设备中断数。

  ¨ sy 在该时间间隔中观测到的每秒系统调用次数。

  ¨ cs 在该时间间隔中观测到的每秒钟上下文切换次数。

  Cpu段显示内容

  ¨ us 列显示了用户模式所消耗的 CPU 时间。

  ¨ sy 列详细显示了 CPU 在系统模式所消耗的 CPU 时间。

  ¨ id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待时间的百分比。

  ¨ wa 列详细显示了有未决本地磁盘 I/O 时 CPU 空闲的时间百分比。wa 的值如果超过 25%,就表明磁盘子系统可能没有被正确平衡,或者这也可能是磁盘工作负荷很重的结果。

  如果在一个单用户系统中,us + sy时间不超过 90%,我们就不认为系统的CPU是受限制的。

  如果在一个多用户系统中,us + sy时间超过 80%, 我们就认为系统的CPU是受限的。其中的进程将要花时间在运行队列中等待。响应时间和吞吐量会受损害。

  检查cpu,我们主要关注报告中的4个cpu列和2个kthr(内核线程)列。

  在上面的示例中,我们可以观察到以下几个主要的信息:

  CPU IDLE比较高,比较空闲;r列为0,表明线程不存在等待;

  WA值不高,说明I/O压力不大;

  free值比较大,pi,po为0,表明内存非常富裕。空闲较多。

  2、sar

  第二个常用的是 sar命令,但是sar会增加系统的开销。当然有些情况下,我们使用sar比较方便。

  sar的输出结果与前面的基本类似,这里不再作详细的介绍,关于命令的语法,也不再作详细的介绍,我们常用的命令格式:

#sar 1 3

AIX jsdxh_db02 3 5 00C2C1EB4C00 10/24/07

System configuration: lcpu=16

17:52:26 %usr %sys %wio %idle physc

17:52:27 19 7 0 75 8.00

17:52:28 19 6 0 75 8.01

17:52:29 19 7 0 75 8.02

Average 19 7 0 75 8.01

  在这里,sar命令输出的是一个整体的cpu使用情况的一个统计,统计分项目的内容也比较直观,通过名字就可以理解涵义。这里有一点比较方便的就是,在最后一行有一个汇总的average行,作为上述统计的一个平均。另外,补充说明一点的就是,一般来说,第一行统计信息包含了sar命令本身启动的cpu消耗,所以往往是偏高的,所以导致average值也往往是偏高一点的。当然,这不会对结果产生多大影响。

  当我们有多个cpu的时候,而程序采用的是单线程,有时候会出现一种情况,我们检查发现,cpu总体的使用率不高,但是程序响应却比较慢。这里有可能就是单线程只使用了一个cpu,导致这个cpu100%占用,处理不过来,而其他的cpu却闲置。这时可以对cpu分开查询,统计每个cpu的使用情况。

#sar -P ALL 1 2
AIX jsdxh_db02 3 5 00C2C1EB4C00 10/24/07

System configuration: lcpu=16

18:03:30 cpu %usr %sys %wio %idle physc

18:03:31 0 0 69 0 31 0.00

1 50 50 0 0 1.00

2 0 0 0 100 0.52

3 0 0 0 100 0.48

4 0 1 0 99 0.54

5 0 0 0 100 0.46

6 0 0 0 100 0.53

7 0 0 0 100 0.47

8 0 0 0 100 0.53

9 0 0 0 100 0.47

10 0 2 0 98 0.54

11 0 0 0 100 0.46

12 11 58 0 31 0.00

13 100 0 0 0 1.00

14 0 0 0 100 0.53

15 0 0 0 100 0.47

- 19 7 0 75 8.01

18:03:32 0 0 71 0 29 0.00

1 50 50 0 0 1.00

2 0 0 0 100 0.52

3 0 0 0 100 0.48

4 0 1 0 99 0.54

5 0 0 0 100 0.47

6 0 0 0 100 0.52

7 0 0 0 100 0.47

8 0 0 0 100 0.53

9 0 0 0 100 0.47

10 0 2 0 98 0.54

11 0 0 0 100 0.46

12 39 41 0 20 0.00

13 100 0 0 0 1.00

14 0 0 0 100 0.52

15 0 0 0 100 0.47

- 19 7 0 75 7.98

Average 0 0 70 0 30 0.00

1 50 50 0 0 1.00

2 0 0 0 100 0.52

3 0 0 0 100 0.48

4 0 1 0 99 0.54

5 0 0 0 100 0.46

6 0 0 0 100 0.53

7 0 0 0 100 0.47

8 0 0 0 100 0.53

9 0 0 0 100 0.47

10 0 2 0 98 0.54

11 0 0 0 100 0.46

12 28 48 0 24 0.00

13 100 0 0 0 1.00

14 0 0 0 100 0.52

15 0 0 0 100 0.47

- 19 7 0 75 8.00

  上面是分cpu统计的情况,结果应该也比较直观吧。

  Sar还有其他一些比较特殊的使用方法,比如:

  如果希望多个采样和多个报告,可为 sar 命令指定一个输出文件,这样就方便多了。将 sar 命令的标准输出数据定向到 /dev/null,并将 sar 命令作为后台进程运行。具体的命令格式为:

  sar -A -o /temp/sar_result.log 5 300 > /dev/null &
  关于sar其他的一些使用方法,这里不再详述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: