zoukankan      html  css  js  c++  java
  • Linux 系统负载查询及分析说明

    Linux 系统出现死机或卡顿时,可以参阅如下步骤进行整体排查:

    1. 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机。
    2. 检查 /var/spool/cron 等系统配置中是否有 cron(计划任务、自动任务)在对应时间段内执行。
    3. 检查 Web 服务器的参数是否超过了服务器的性能。比如最大连接数过高等。
    4. 检查进程数是否非常高,导致服务瘫痪,机器假死。
    5. 查看系统日志中是否有异常记录。
    6. 检查磁盘是否有坏块。
    7. 内核消耗过大,查看是否有瞬间资源占用过大的进程或服务。
    8. 查看是否有异常进程,是否存在被攻击或入侵症状。

    使用 sar 查看 Linux 系统各项资源使用情况


    sar 是System Activity Reporter(系统活动情况报告)的缩写。sar 工具对系统状态进行取样后,=通过计算数据和比例来表达系统当前的运行状态。其特点是可以连续对系统取样,获得大量的取样数据。其取样数据和分析结果可以存入文件,所需的负载很小。

    sar 是 Linux 系统中较为全面的性能分析工具,可以从多个方面对系统的活动进行监控和报告,包括文件读写情况、系统调用使用情况、串口、CPU 效率、内存使用情况、进程活动及 IPC 有关的活动情况等等。

    • 安装
      使用 yum install sysstat 进行安装,然后使用 /etc/init.d/sysstat start 启动服务。

    • 查看 CPU 负载
      用法:
       
      sar -u 1 5

      示例输出:
       
      sar -u 1 5
      Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 	07/04/2016 	_x86_64_	(1 CPU)
      
      10:16:35 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
      10:16:36 AM     all     14.14      0.00      1.01      0.00      0.00     84.85
      10:16:37 AM     all     14.14      0.00      0.00      1.01      0.00     84.85
      10:16:38 AM     all      0.00      0.00      1.01      0.00      0.00     98.99
      10:16:39 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
      10:16:40 AM     all      1.00      0.00      0.00      0.00      0.00     99.00
      Average:        all      5.86      0.00      0.40      0.20      0.00     93.54

      回显说明:
      • %user:用户模式下消耗的 CPU 时间的比例。
      • %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例。
      • %system:系统模式下消耗的 CPU 时间的比例。
      • %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。
      • %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例。
      • %idle:CPU 空闲时间比例。
    • 查看平均负载
      用法:
       
      sar -q 1 60

      示例输出:
       
      sar -q 1 6
      Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 	07/04/2016 	_x86_64_	(1 CPU)
      
      10:23:13 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
      10:23:14 AM         0       142      0.00      0.01      0.05         0
      10:23:15 AM         0       142      0.00      0.01      0.05         0
      10:23:16 AM         0       142      0.00      0.01      0.05         0
      10:23:17 AM         0       142      0.00      0.01      0.05         0
      10:23:18 AM         0       142      0.00      0.01      0.05         0
      10:23:19 AM         0       142      0.00      0.01      0.05         0
      Average:            0       142      0.00      0.01      0.05         0
      

      回显说明:
      指定 -q 后,可以查看运行队列中的进程数、系统上的进程大小、平均负载等信息。与其它命令相比,能查看各项指标随时间变化的情况。
       
      <ul>
      	<li><span><span>runq-sz:运行队列的长度(等待运行的进程数)。</span></span></li>
      	<li><span><span><span>plist-sz:进程列表中进程(processes)和线程(threads)的数量。</span></span></span></li>
      	<li><span><span><span><span>ldavg-1:最后 1 分钟的系统平均负载。</span></span></span></span></li>
      	<li><span><span><span><span><span>ldavg-5:过去 5 分钟的系统平均负载。</span></span></span></span></span></li>
      	<li><span><span><span><span><span><span>ldavg-15:过去 15 分钟的系统平均负载。</span></span></span></span></span></span></li>
      </ul>
      </li>
      
    • 查看内存负载
      用法:
       
      sar -r 1 3

      示例输出:
       
      sar -r 1 3
      Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 	07/04/2016 	_x86_64_	(1 CPU)
      
      10:27:34 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
      10:27:35 AM    275992    740664     72.85    181552    315340    362052     35.61    471216    115828        60
      10:27:36 AM    276024    740632     72.85    181552    315340    362052     35.61    471220    115828        64
      10:27:37 AM    276024    740632     72.85    181552    315340    362052     35.61    471220    115828        64
      Average:       276013    740643     72.85    181552    315340    362052     35.61    471219    115828        63

      回显说明:
      • kbmemfree:该值和 free 命令中的 free 值基本一致,它不包括 buffer 和 cache 空间。
      • kbmemused:该值和 free 命令中的 used 值基本一致,它包括 buffer 和 cache 空间。
      • %memused:物理内存使用率,该值是 kbmemused 和内存总量(不包括 swap)的百分比。
      • kbbuffers 和 kbcached:这两个值和 free 命令中的 buffer 和 cache 一致。
      • kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。
      • %commit:该值是 kbcommit 与内存总量(包括swap)的百分比。
    • 查看页面交换发生状况
      用法:
       
      sar -W 1 3

      示例输出:
       
      sar -W 1 3
      Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 	07/04/2016 	_x86_64_	(1 CPU)
      
      10:28:59 AM  pswpin/s pswpout/s
      10:29:00 AM      0.00      0.00
      10:29:01 AM      0.00      0.00
      10:29:02 AM      0.00      0.00
      Average:         0.00      0.00

      回显说明:
      • pswpin/s:每秒系统换入的交换页面(swap page)数量。
      • pswpout/s:每秒系统换出的交换页面(swap page)数量。
    • 其它常见 sar 参数说明(区分大小写)
       
      <ul>
      	<li><span><span>-A 汇总所有的报告</span></span></li>
      	<li><span><span><span>-a 报告文件读写使用情况</span></span></span></li>
      	<li><span><span><span><span>-B 报告附加的缓存的使用情况</span></span></span></span></li>
      	<li><span><span><span><span><span>-b 报告缓存的使用情况</span></span></span></span></span></li>
      	<li><span><span><span><span><span><span>-c 报告系统调用的使用情况</span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span>-d 报告磁盘的使用情况</span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span>-g 报告串口的使用情况</span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span>-h 报告关于buffer使用的统计数据</span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span>-m 报告IPC消息队列和信号量的使用情况</span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span>-n 报告命名cache的使用情况</span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span>-p 报告调页活动的使用情况</span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span>-q 报告运行队列和交换队列的平均长度</span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-R 报告进程的活动情况</span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-r 报告没有使用的内存页面和硬盘块</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-u 报告CPU的利用率</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-v 报告进程、i节点、文件和锁表状态</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-w 报告系统交换活动状况</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      	<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-y 报告TTY设备活动状况</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
      </ul>
      </li>
      

    使用 htop 查看系统负载情况


    htop 是 Linux 系统中的一个互动进程查看器,可以让用户进行交互式操作,可横向或纵向滚动浏览进程列表,支持鼠标操作。用户可以在安装 htop 来监控服务器的负载。 

    Linux系统默认不带有 htop 工具,需要手动安装通过 yum install htop 等方法安装后才能使用。安装方法本文不再详述。

    安装成功后,可以在命令行输入 htop 来启动 htop 监控工具。htop 启动后的界面如下图所示:

    blob.png

    返回结果左侧显示 CPU、内存、交换区 swap 的使用情况,右侧显示任务、负载、开机时间,下面的主体部分就是进程实时状况,底端是 F1-F10 功能键。

    相关快捷功能键的说明如下:

    功能键 对应功能 说明
    F1 Invoke htop Help 查看htop帮助说明
    F2 Htop Setup Menu htop 配置菜单
    F3 Search for a Process 搜索进程
    F4 Incremental process filtering 进程过滤器
    F5 Tree View 显示树形结构
    F6 Sort by a column 选择排序方式
    F7 Nice - (change priority) 可减少nice值,用于提高对应进程的优先级
    F8 Nice + (change priority) 可增加nice值,用于降低对应进程的优先级
    F9 Kill a Process 对进程传递信号
    F10 Quit htop 结束htop

    在 htop 界面,用户可以通过鼠标点击相关进程、列、功能键,也可以通过上下键或 PgUP、PgDn  键选定想要的进程,左右键或 Home、 End 键移动字段,常用的快捷键如下:

    • Space    标记/取消标记一个或多个进程。
    • s    选择某一进程,按 s 后,用 strace 追踪进程的系统调用。
    • l    显示进程打开的文件。如果安装了 lsof,按此键可以显示进程所打开的文件。
    • M    按 Memory 使用排序。
    • P    按 CPU 使用排序。
    • T    按 Time+ 使用排序。
    • F    跟踪进程: 如果排序顺序引起选定的进程在列表上随意移动,让选定条跟随该进程。这对监视一个进程非常有用。通过这种方式,用户可以让特定进程在屏幕上一直可见。使用方向键会停止该功能。
    • K    显示/隐藏内核线程。
    • H    显示/隐藏用户线程。
    • Ctrl-L    刷新。

    鼠标点击 Help 或者按 F1 ,可以显示自带帮助:

    blob.png

    鼠标点击 Setup 或者按下 F2 可以进入 htop 配置页面。例如最后一项的设定是调整 Columns(数据列)的显示,用于自定义 htop 进程列表中可以看到哪些字段的数据及信息。

    blob.png

    鼠标点击 Search 或者按下 F3  或者输入 "/", 可以通过输入进程名进行搜索,例如搜索 ssh 进程

    blob.png

    输入 "t" 或按下 F5,显示树形结构,与 pstree 显示效果类似,可以看到所有程序树状执行的结构。

    blob.png

    按下 F6 可以选择依照哪一列来排序,最常用的排序内容就是 CPU 和 Memory。

    blob.png

  • 相关阅读:
    Redis涉及的概念
    Redis高级教程
    Redis基础入门
    Java多线程面试题
    Java集合面试题
    Java集合基础
    Java基础面试题总结
    Zookeeper Basics
    GitLab基础入门
    阿里云ECS服务器Docker安装Tomcat过程记录
  • 原文地址:https://www.cnblogs.com/hftian/p/10023245.html
Copyright © 2011-2022 走看看