[转]Linux服务器性能评估与优化(一)

1、影响Linux服务器性能的因素 node

1. 操做系统级linux

 

Ø       CPUios

Ø       内存web

Ø       磁盘I/O带宽算法

Ø       网络I/O带宽服务器

 

2.        程序应用级网络

 

2、系统性能评估标准ide

影响性能因素工具

评判标准post

糟糕

CPU

user% + sys%< 70%

user% + sys%= 85%

user% + sys% >=90%

内存

Swap In(si)=0

Swap Out(so)=0

Per CPU with 10 page/s

More Swap In & Swap Out

磁盘

iowait % < 20%

iowait % =35%

iowait % >= 50%


 

其中:

       %user:表示CPU处在用户模式下的时间百分比。

       %sys:表示CPU处在系统模式下的时间百分比。

       %iowait:表示CPU等待输入输出完成时间的百分比。

       swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM

       swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK

 

3、系统性能分析工具

 

1.经常使用系统命令 

Vmstatsariostatnetstatfreepstop

 

2.经常使用组合方式 

           vmstatsariostat检测是不是CPU瓶颈

           freevmstat检测是不是内存瓶颈

           iostat检测是不是磁盘I/O瓶颈

           netstat检测是不是网络带宽瓶颈

 

4、Linux性能评估与优化

 

1. 系统总体性能评估(uptime命令)

 

[root@web1 ~]# uptime

16:38:00 up 118 days, 3:01, 5 users, load average: 1.22, 1.02, 0.91

这里须要注意的是:load average这个输出值,这三个值的大小通常不能大于系统CPU的个数,例如,本输出中系统有8个CPU,若是load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,可是偶尔大于8时,倒不用担忧,通常不会影响系统性能。相反,若是load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,好比本例中的输出,CPU是很是空闲的。

 

2. CPU性能评估

 

(1)利用vmstat命令监控系统CPU

   该命令能够显示关于系统各类资源之间相关性能的简要信息,这里咱们主要用它来看CPU一个负载状况。

   下面是vmstat命令在某个系统的输出结果:

 

[root@node1 ~]# vmstat 2 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r b   swpd   free      buff cache   si   so    bi    bo       in     cs     us sy id   wa st

 0 0    0    162240   8304 67032   0    0    13    21   1007   23     0 1   98   0   0

 0 0    0    162240   8304 67032   0    0     1     0     1010   20     0 1   100 0   0

 0 0    0    162240   8304 67032   0    0     1     1     1009   18     0 1    99 0   0

l        Procs

     r列表示运行和等待cpu时间片的进程数,这个值若是长期大于系统CPU的个数,说明CPU不足,须要增长CPU。

     b列表示在等待资源的进程数,好比正在等待I/O、或者内存交换等。

l        Cpu

    us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,可是若是长期大于50%,就须要考虑优化程序或算法。

     sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源不少。

    根据经验,us+sy的参考值为80%,若是us+sy大于 80%说明可能存在CPU资源不足。

 

(2)利用sar命令监控系统CPU

 

sar功能很强大,能够对系统的每一个方面进行单独的统计,可是使用sar命令会增长系统开销,不过这些开销是能够评估的,对系统的统计结果不会有很大影响。

 下面是sar命令对某个系统的CPU统计输出:

[root@webserver ~]# sar -u 3 5

Linux 2.6.9-42.ELsmp (webserver)        11/28/2008      _i686_ (8 CPU)

11:41:24 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle

11:41:27 AM     all      0.88      0.00      0.29      0.00      0.00     98.83

11:41:30 AM     all      0.13      0.00      0.17      0.21      0.00     99.50

11:41:33 AM     all      0.04      0.00      0.04      0.00      0.00     99.92

11:41:36 AM     all      90.08     0.00      0.13      0.16      0.00     9.63

11:41:39 AM     all      0.38      0.00      0.17      0.04      0.00     99.41

Average:        all      0.34      0.00      0.16      0.05      0.00     99.45

                           

对上面每项的输出解释以下:

l        %user列显示了用户进程消耗的CPU 时间百分比。

l        %nice列显示了运行正常进程所消耗的CPU 时间百分比。

l        %system列显示了系统进程消耗的CPU时间百分比。

l        %iowait列显示了IO等待所占用的CPU时间百分比

l        %steal列显示了在内存相对紧张的环境下pagein强制对不一样的页面进行的steal操做 

l        %idle列显示了CPU处在空闲状态的时间百分比。

 

问题

1.你是否遇到过系统CPU总体利用率不高,而应用缓慢的现象?

       在一个多CPU的系统中,若是程序使用了单线程,会出现这么一个现象,CPU的总体使用率不高,可是系统应用却响应缓慢,这多是因为程序使用单线程的缘由,单线程只使用一个CPU,致使这个CPU占用率为100%,没法处理其它请求,而其它的CPU却闲置,这就致使了总体CPU使用率不高,而应用缓慢现象的发生。

 

3. 内存性能评估

1)利用free指令监控内存

free是监控linux内存使用情况最经常使用的指令,看下面的一个输出:

[root@webserver ~]# free -m

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     通常有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源很是充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,须要增长系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能知足应用需求,暂时不影响系统性能。

3.内存性能评估

 

1)利用free指令监控内存

free是监控linux内存使用情况最经常使用的指令,看下面的一个输出:

[root@webserver ~]# free -m

                total         used       free     shared    buffers     cached

Mem:       8111       7185        926          0        243           6299

-/+ buffers/cache:     643       7468

Swap:       8189          0         8189

     通常有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源很是充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,须要增长系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能知足应用需求,暂时不影响系统性能。

  

2利用vmstat命令监控内存

 

[root@node1 ~]# vmstat 2 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r b   swpd   free      buff cache   si   so    bi    bo       in     cs     us sy id wa st

 0 0    0    162240   8304 67032   0    0    13    21   1007   23     0 1 98   0 0

 0 0    0    162240   8304 67032   0    0     1     0     1010   20     0 1 100 0 0

 0 0    0    162240   8304 67032   0    0     1     1     1009   18     0 1 99   0 0

l        memory

         swpd列表示切换到内存交换区的内存数量(以k为单位)。若是swpd的值不为0,或者比较大,只要siso的值长期为0,这种状况下通常不用担忧,不会影响系统性能。

         free列表示当前空闲的物理内存数量(以k为单位)

         buff列表示buffers cache的内存数量,通常对块设备的读写才须要缓冲。

         cache列表示page cached的内存数量,通常做为文件系统cached,频繁访问的文件都会被cached,若是cache值较大,说明cached的文件数较多,若是此时IObi比较小,说明文件系统效率比较好。

l        swap

si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。

so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。

通常状况下,siso的值都为0,若是siso的值长期不为0,则表示系统内存不足。须要增长系统内存。

相关文章
相关标签/搜索