`
standalone
  • 浏览: 598004 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux性能分析和调整的基本原则

阅读更多

优化linux系统需要考虑多方面的因素,因为各个因素之间相互关联,因此遇到性能问题以及性能的调节需要综合考虑,基本要素考虑与分析: 

1 ,那些措施能确实提供性能?

1 )确保系统有足够的内存。

2 )使用集群;

3 )对磁盘进行优化(包括文件系统),提高 I/O 吞吐量;

4 )网络带宽;

 

2 ,影响系统性能的一般因素:

1 CPU

2 )内存

3 )磁盘 I/O 宽带

 

4 )网络 I/O 宽带

一般来说,现在的网络服务器针对提供的服务,其 CPU 速度是足够提供处理能力的;所以

影响性能的是磁盘和内存。内存不够,那么对虚拟内存管理系统来说要频繁地进行内存页

写到磁盘,磁盘写到内存的操作。这就是内存交换过程,很大地影响了性能。

 

而网络 I/O ,一般来说他不是独立的。所以要综合其他因素来考虑。

 

3 ,检查系统的性能情况。

1)CPU 使用情况分析

 

以下指标来衡量 CPU 的负载情况 .

 

总体利用率:

 

[root@linux stone]sar -u 5 5

Linux 2.4.21-4.ELsmp (linux1)   01/04/05

 

18:00:17          CPU     %user     %nice   %system     %idle

18:00:22          all      1.50      0.00      0.93     97.57

18:00:27          all     16.02      0.00      4.74     79.24

18:00:32          all      5.69      0.00      3.77     90.53

18:00:37          all      0.79      0.00      1.10     98.11

18:00:42          all      2.69      0.00      1.21     96.10

Average:          all      5.15      0.00      2.24     92.61

 

获得指定 CPU 号(多 CPU 情况下)的使用情况

[root@linux stone]sar -U 0

Linux 2.4.21-4.ELsmp (linux1)   01/04/05

00:00:00          CPU     %user     %nice   %system     %idle

00:10:00            0      1.10      0.00      0.83     98.36

00:20:00            0      0.55      0.00      0.78     97.52

00:30:00            0     

0.97      0.00      0.77     98.57

00:40:00            0      1.15      0.00      0.93     97.09

00:50:00            0      1.88      0.00      1.33     95.96

01:00:00            0      1.20      0.00      1.11     96.66

01:10:00            0      0.78      0.00      1.26     97.96

01:20:00            0      1.07      0.00      1.04     96.91

01:30:00            0      1.24      0.00      1.01     97.29

 

可以获得运行用户进程 %user, 内核进程 %system 和空闲状态是 CPU 时间的百分比 .

 

观察数据,获得结论:

     %user 越大一般表明服务器处于运行状态; %system 越大表明服务器处于系统调用

     或者 I/O 操作。如果 CPU 有大量时间处于空闲状态( %idle), 那就说明 CPU 足够。

 

我们还可以获得每个时间段上内核切换当前进程的次数,如果这个数很高,表示服务器

硬件有问题。

[root@linux stone]sar -w

07:50:00      cswch/s

08:00:00        285.49

08:10:00       259.64

08:20:00       387.54

08:30:00       359.15

08:40:00       504.29

08:50:00       762.73

09:00:00       572.93

09:10:01       885.75

09:20:00      1159.97

09:30:00      1101.83

09:40:00      1095.72

09:50:00      1052.89

10:00:00       961.75

10:10:00       861.31

10:20:00       501.76

10:30:00       370.81

10:40:00       736.26

10:50:00       635.93

11:00:00       399.51

11:10:00       873.58

11:20:00       741.14

11:30:00       776.49

11:40:00       641.55

Average:      

平均负载:

  系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数,一般来说只要每个 CPU 的当

  前活动进程数不大于 3 那么系统的性能就是良好的,如果每个 CPU 的任务数大于 5 ,那么就表示这

  台机器的性能有严重问题 .

 

  [root@linux stone]uptime

  18:07:22  up 10 days,  8:05,  1 user,  load average: 0.49, 0.31, 1.18

  表示在过去的 1 5 15 分钟内运行队列中的平均进程数量 .

IXDBA.NET社区论坛

 

  [root@linux stone]sar -q

  07:50:00      runq-sz  plist-sz   ldavg-1   ldavg-5

08:00:00            0       214      0.01      0.08

08:10:00            0       222      0.37      0.21

08:20:00            1       229      0.41      0.42

08:30:00            0       239      0.45      1.10

08:40:00            0       242      0.24      0.36

08:50:00            1       253      1.55      1.98

09:00:00            0       248      0.45      0.55

09:10:01            0       273      8.17      3.85

09:20:00            0        295      0.62      0.99

09:30:00            0       279      0.87      0.79

09:40:00            1       284      0.62      0.68

09:50:00            0       302      0.38      0.51

10:00:00            0       277      0.98      0.79

10:10:00           

2       289      0.60      0.55

10:20:00            2       264      0.28      0.33

10:30:00            0       269      0.28      0.31

10:40:00            0       284      0.58      0.46

10:50:00            0       324      1.18      0.62

11:00:00             0       311      0.43      0.31

11:10:00            0       330      0.65      0.54

11:20:00            1       335      0.45      0.45

11:30:00            1       345      0.39      0.47

IXDBA.NET社区论坛

11:40:00            0       322      0.22      0.36

Average:             0       296      0.65      0.60

runq-sz: 等待运行的进程数

plist-sz :总的进程数(在 process list).

ldavg-1 : 系统最后一分钟的平均负载

ldavg-5:   系统最后 5 分钟的平均负载

 

每个进程的 CPU 消耗量:通过了解具体的某个进程对 CPU 消耗的统计,我们可以确定某一进程是否存在问题,

并进行改善(改善该进程?改善硬件? ....)

可以用 ps -aux 或者 top 来观察某一进程对 CPU 的消耗情况。

另外, vmstat 工具也可以报告一些 cpu 的情况 .

[root@linux stone]vmstat

procs                       memory      swap          io     system         cpu

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

  0  0  92456 141164 102032 2346524    0    0     7    

2) 内存情况

  你必须对系统内存管理过程进行了解,特别是页的交换等原理。一般用活动虚拟内存的总量和换页率来衡量

  内存的使用情况。从活动虚拟内存总量我们可以获得内存的需求量;根据换页率我们可以获得内存有多少处于

  使用中。换页率越高,说明内存使用很大(磁盘会咯咯响),这时候应该增加内存。

 

  活动虚拟内存的总量 (VM)= 实际内存大小 (size of real memory)+ 使用的交换空间大小 (amount of swap space used)

  [root@linux stone]sar -r

  07:50:00     kbmemfree kbmemused  %memused kbmemshrd kbbuffers  kbcached kbswpfree kbswpused  %swpused

IXDBA.NET技术社区

08:00:00        74532   3536724     97.94         0     90808   2237872   8294676     91172      1.09

08:10:00        93652   3517604     97.41         0     88864   2218328   8294696     91152      1.09

08:20:00        63192   3548064     98.25         0     69988   2269068   8294700     91148      1.09

08:30:00       272344   3338912     92.46         0     22552   2119284   8290536     95312      1.14

08:40:00        126104   3485152     96.51         0     38888   2242808   8290560     95288      1.14

08:50:00       191476   3419780     94.70         0     18528   2246968   8289944     95904      1.14

09:00:00        55304   3555952     98.47         0     32836    2368824   8285288    100560      1.20

09:10:01       201592   3409664     94.42         0     50876   2251528   8285708    100140      1.19

09:20:00       

32912   3578344     99.09         0     66316   2410260   8285984     99864      1.19

09:30:00         55232   3556024     98.47         0     45944   2400496   8286072     99776      1.19

09:40:00        51652   3559604     98.57         0     64392   2383592   8286216     99632      1.19

09:50:00        45172   3566084     98.75         0     70144   2388804   8286428     99420      1.19

10:00:00        52068   3559188     98.56         0     64676   2395512   8286564     99284      1.18

10:10:00        51400   3559856     98.58         0     49620   2407528   8286596     99252      1.18

IXDBA.NET技术社区

10:20:00         41692   3569564     98.85         0     47684   2424280   8286652     99196      1.18

10:30:00        35200   3576056     99.03         0     50336   2431268   8286656     99192      1.18

10:40:00        21400   3589856     99.41         0     64612   2423780   8286728     99120      1.18

10:50:00        83048   3528208     97.70         0     68084   2331448   8286796     99052      1.18

11:00:00        22072   3589184     99.39         0     70764  

2416216   8286816     99032      1.18

11:10:00        34376   3576880     99.05         0     56780   2405008   8286824     99024      1.18

11:20:00        36376   3574880     98.99         0     48756   2397968   8286836     99012      1.18

11:30:00        43808   3567448     98.79         0     49708   2398852   8286924     98924      1.18

11:40:00        34884   3576372     99.03         0     60960   2408756   8286936     98912      1.18

11:50:00        38328   3572928     98.94         0     67080   2407960   8286936     98912      1.18

 

12:00:00        38932   3572324     98.92         0     72724   2406132   8286940     98908      1.18

12:10:00       109300   3501956     96.97         0     75348   2326492   8286940     98908      1.18

Average:        64548   3546708     98.21         0     96633   2330707   8291911     93937      1.12

 

 

  [root@linux stone]swapon -s

Filename                        Type            Size    Used    Priority

/dev/sdb8                       partition       4192924 98908   -1

/dev/sdb10                     

partition       4192924 0       -2

通过以上数据,我们可以获得

  活动虚拟内存的总量 (VM)=kbmem + kbswpused=3.54G

  3.47G 就是当前服务器需要的内存总量 .

 

   [root@linux stone]sar -B

   07:50:00     pgpgin/s pgpgout/s  activepg  inadtypg  inaclnpg  inatarpg

08:00:00         9.34    139.23    566687         0     13589    142713

08:10:00        25.71    108.40    564261         0     13539    141743

08:20:00       149.36    191.93    573187         0     13399    143335

IXDBA.NET社区论坛

08:30:00        43.63    234.46    529094     35493     11998    134494

08:40:00       246.68    277.54    565985     25012      9177    141597

08:50:00       381.88    536.92    553537     52107     12381    140623

09:00:00       190.29    307.08    581102     31530     12311    147195

09:10:01       259.69    860.26    560927     60833     13643    142327

09:20:00       487.91    550.73    604302     55059     14379    151157

09:30:00       382.74    710.78    598312     70977     14059    149736

09:40:00       354.97    510.46    598398     70661     13795    149920

09:50:00       280.48    629.94    602880     64397     13864    150517

10:00:00       447.48    659.52    602483     69873     13362    150261

10:10:00       404.97    458.69    603719     68104    

13724    150115

10:20:00       310.69    272.95    601711     67460     13898    150651

10:30:00       121.59    184.03    603972     56077     13928    151109

10:40:00       263.55    392.60    605818     60314     17208    151754

10:50:00       210.45    348.91    589640     72762     13761    148093

11:00:00       190.55    199.58    607545      54517     15086    151774

11:10:00       350.40    462.20    603874     75205     14074    150970

11:20:00       374.10    437.94    603769     70937     13904    150877

IXDBA.NET技术社区

11:30:00       163.58    381.97    601763     62157     14369    150481

11:40:00         96.75    298.26    605429     45214     14093    151042

11:50:00       127.14    159.75    602817     38423     13911    150789

12:00:00        57.85    186.46    602126     27663     14362    150737

12:10:00        51.41    216.03    585281     32559      13808    146942

12:20:00        95.07    225.01    600874      6573     13793    150148

12:30:00       197.36    162.14    605716      5821     16786    151620

12:40:00        16.31    145.40    604436         0     14285    151002

Average:       100.76    226.88    591604     16947     13867   

148584

 

pgpgin/s: 换入页的 KB

pgpgout/s: 换出页的 KB

activepg: 内存中活动的页数

inadtypg: Number of inactive dirty (modified or potentially modified) pages in memory.

inaclnpg: Number of inactive clean (not modified) pages in memory.

inatarpg: "Inactive  target"  number  of  pages.This field is a 1-minute floating average of the number of

                     pages the system needs to "steal" every second in order to satisfy memory demand.

margin: 0cm 0cm

分享到:
评论

相关推荐

    Linux服务器性能调优

    将可以学习以下内容: ·安装和配置linux以便达到最高性能 ·为用户的linux环境评估并选择适当的硬件体系结构 ·理解linux2.4至2.6版本的内核:组件、性能问题以及优化可能性 ·掌握linux性能调整的核心原则和策略...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    15.3.3 DML语句性能调整 15.3.4临时表空间的调整 15.3.5日志文件的调整 15.3.6 UNDO表空间的调整 15.4应用系统 15.4.1应用拆分 15.4.2 SQL执行过程 15.4.3 SQL解析 15.4.4 SQL优化 15.4.5 SQL行源生成 ...

    人事工资管理系统数据库设计.doc

    能够调整工资标准和员 工信息,也能够调整其他工资项目,根据需要对教职员工基本信息和工资信息的查询 ,系统应该包括系统用户数据的添加,修改和删除。系统应该具有简单,易用,小巧 ,经典的特色,应该能够对高校...

    基于C++实现的HTTP服务器改进版源码+项目使用说明+详细注释.zip

    **②同步机制实现**:基于unique_lock以及condition_variable实现同步和互斥,符合RAII原则;\ **5)简单客户端**:(可以通过浏览器进行服务端访问,也可以通过该客户端实现交互以及非活动连接处理的测试)\ **...

    Keras中文手册

    Keras安装和配置指南,提供了详细的Linux和Windows下Keras的安装和配置步骤。 深度学习与Keras:位于导航栏最下方的该模块翻译了来自Keras作者博客keras.io和其他Keras相关 博客的文章,该栏目的文章提供了对深度...

    mynav

    阿尔卑斯Linux上的Docker PHP-FPM 7.4和Nginx 1.18 示例DockerPHP-FPM 7.4和Nginx 1.18设置,建立在。... 遵循KISS原则(保持简单,愚蠢),可以轻松理解和调整图像以适应您的需求 重大更改(26/01/2019)

    java开源包8

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    oracle数据库设计规范.doc

    3、数据库物理设计原则 3.1、数据库环境配置原则 操作系统环境: 对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负 载均衡能力要求较高的系统,可以采用Oracle9i RAC的集群数据库的方法,...

    java开源包1

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包11

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包2

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包3

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包6

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包5

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包10

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    JAVA上百实例源码以及开源项目

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    java开源包4

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包7

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包9

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

Global site tag (gtag.js) - Google Analytics