zoukankan      html  css  js  c++  java
  • Linux服务器性能评估与优化

    一、影响务器性能因素

    影响企业生产环境Linux服务器性能的因素有很多,一般分为两大类,分别为操作系统层级和应用程序级别。如下为各级别影响性能的具体项及性能评估的标准:

    (1)操作系统级别

    • 内存;

    • CPU;

    • 磁盘I/O;

    • 网络I/O带宽。

    (2) 应用程序及软件

    • Nginx;

    • MySQL;

    • Tomcat;

    •  PHP;

    • 应用程序代码。

    (3)Linux系统性能评估标准如表所示:

    影响性能因素

    评判标准

    糟糕

    CPU

    user% + sys%< 70%

    user% + sys%= 85%

    user% + sys% >=90%

    内存

    Swap Insi)=0

    Swap Outso)=0

    Per CPU with 10 page/s

    More Swap In & Swap Out

    磁盘

    iowait % < 20%

    iowait % =35%

    iowait % >= 50%

    (4)  Linux系统性能分析工具

    常用系统性能分析命令;
    vmstat、sar、iostat、netstat、free、ps、top、iftop等;
    常用系统性能组合分析命令;
    top、uptime                      检查系统整体的负载、承受能力;
    vmstat、sar、iostat    、top      检测是否是CPU瓶颈;
    free、vmstat                     检测是否是内存瓶颈;
    iostat                           检测是否是磁盘I/O瓶颈;
    netstat、iftop                   检测是否是网络带宽瓶颈。

    二、 Linux服务器性能评估与优化

    Linux服务器性能评估与优化是一项长期的工作,需要随时关注网站服务器的运行状态,及时作出相应的调整,如下为Linux服务器性能评估及优化方案:

    1、Linux系统整体性能评估

    uptime命令主要用于查看当前服务器整体性能,例如CPU、负载、内存等值的总览,如下为uptime命令应用案例及详解:

    [root@web1 ~]# uptime
    13:38:00 up 112 days,  14:01,  5 users,  load average: 6.22, 1.02, 0.91

    Load average负载有三个值,分别表示:最近1分钟、5分钟、15分钟系统的负载,三个值的大小一般不能大于系统逻辑CPU核数的2倍,例如Linux操作系统有4个逻辑CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,可以不用担心,一般不会影响系统性能。

    如果load average的输出值小于CPU逻辑个数的2倍,则表示CPU还有空闲的时间片,例如案例中CPU负载为6.22,表示CPU或者服务器是比较空闲的。基于此参数不能完全确认服务器的性能瓶颈,需要借助其他工具进一步判断

    2、CPU性能评估

    利用vmstat命令监控系统CPU,该命令可以显示关于系统各种资源之间相关性能的简要信息,主要用它来查看CPU负载及队列情况。

    如图所示,为vmstat命令在某个系统的输出结果:

    Vmstat输出结果详解如下:

    r                        列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU;
    b                        列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等;
    us                        列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法;
    sy                        列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多;
    us+sy的参考值为80%,如果us+sy大于80%说明可能存在CPU资源不足。

    利用sar命令监控系统CPU,sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。如图15-7所示,为sar命令对某个系统的CPU统计输出:

    Sar输出结果详解如下:

    %user                    列显示了用户进程消耗的CPU 时间百分比;
    %nice                    列显示了运行正常进程所消耗的CPU 时间百分比;
    %system                    列显示了系统进程消耗的CPU时间百分比;
    %iowait                    列显示了IO等待所占用的CPU时间百分比;
    %idle                    列显示了CPU处在空闲状态的时间百分比;
    %steal                    列显示了在内存相对紧张的环境下page in强制对不同的页面进行的steal操作。

    3、内存性能评估

    利用free指令监控内存,free是监控linux内存使用状况最常用的指令,如图15-8所示为服务器内存使用情况:

    一般而言,服务器内存可以通过如下方法判断是否空余:

    应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能。
    应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

    4、磁盘I/O性能评估

    利用iostat评估磁盘性能,监控磁盘IO读写及带宽,如图所示:

    iostat输出结果详解如下:

    Blk_read/s                表示每秒读取的数据块数;
    Blk_wrtn/s                表示每秒写入的数据块数;
    Blk_read                  表示读取的所有块数;
    Blk_wrtn                  表示写入的所有块数。

    可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。

    利用sar评估磁盘性能,通过sar -d组合,可以对系统的磁盘IO做一个基本的统计,如图所示:

    Sar输出结果详解如下:

    await表示平均每次设备I/O操作的等待时间(以毫秒为单位);
    svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位);
    %util表示一秒中有百分之几的时间用于I/O操作;

    磁盘IO性能,评判标准:正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。

    await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

    %util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

    5、网络性能评估

    • 通过ping命令检测网络的连通性

    • 通过netstat –i组合检测网络接口状况

    • 通过netstat –r组合检测系统的路由表信息

    • 通过sar -n组合显示系统的网络运行状态

     通过iftop -i eth0 查看网卡流量,详细参数如下,如图所示:

    <=                    客户端流入的流量;
    =>                    服务器端流出的流量;
    TX                    发送流量;
    RX                    接收流量;
    TOTAL                总流量;
    Cumm                运行iftop到目前时间的总流量;
    peak                    流量峰值;
    rates                    分别表示过去 2s 10s 40s 的平均流量。

  • 相关阅读:
    Constants and Variables
    随想
    C#基础篇之语言和框架介绍
    Python基础19 实例方法 类方法 静态方法 私有变量 私有方法 属性
    Python基础18 实例变量 类变量 构造方法
    Python基础17 嵌套函数 函数类型和Lambda表达式 三大基础函数 filter() map() reduce()
    Python基础16 函数返回值 作用区域 生成器
    Python基础11 List插入,删除,替换和其他常用方法 insert() remove() pop() reverse() copy() clear() index() count()
    Python基础15 函数的定义 使用关键字参数调用 参数默认值 可变参数
    Python基础14 字典的创建修改访问和遍历 popitem() keys() values() items()
  • 原文地址:https://www.cnblogs.com/deny/p/10295953.html
Copyright © 2011-2022 走看看