zoukankan      html  css  js  c++  java
  • 【原创】大叔经验分享(90)linux服务器iowait和负载很高

    # top

    top - 21:21:51 up 207 days,  1:30,  5 users,  load average: 0.90, 0.79, 1.62
    Tasks: 249 total,   1 running, 246 sleeping,   2 stopped,   0 zombie
    %Cpu(s): 49.2 us,  2.0 sy,  0.0 ni, 48.1 id,  0.0 wa,  0.0 hi,  0.6 si,  0.0 st

    如果load average很大(参考核数),则系统负载很高,其中一种可能是由于iowait很大,具体可见%Cpu中的wa,通常wa=0.0,

    iowait很大有两种可能,一种是网络,一种是磁盘,并且极有可能是磁盘,检查磁盘io,有多种命令:

    1)iotop

    Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
    Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
      TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
        1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
        2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
        3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]

    # iotop -b -n 5 -d 2

    以非交互方式每隔2s运行5次

    可以发现读写io很高的进程;

    2)iostat

    Linux 3.10.0-957.5.1.el7.x86_64 (002)     01/11/2019     _x86_64_    (8 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              15.42    0.00    2.19    1.06    0.00   81.33
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    vda              33.36       100.93       420.00 1805775696 7514000609
    vdb              48.99       460.82      5627.92 8244424473 100686856544
    vdc               3.77        91.20       262.15 1631539193 4689931576
    vdd               0.74        26.14       106.88  467597777 1912213584

    # iostat -x 2 5

    每隔2s运行5次

    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               6.73    0.00   15.63   58.83    0.00   18.81
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    vda               0.00     7.00    0.50    6.00     2.00    54.00    17.23     0.00    0.54    0.00    0.58   0.38   0.25
    vdb               0.00     5.00    0.00    1.50     0.00    26.00    34.67     0.00    0.67    0.00    0.67   0.67   0.10
    vdc               0.00     0.00    1.00    0.00    64.00     0.00   128.00    37.88 23500.00 23500.00    0.00 619.00  61.90
    vdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

    可以发现读写io很高的磁盘;

    如果发现一个磁盘读写io很高,怎么查看是哪些进程导致的?

    # lsof /dev/vdc1

    COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
    java     2688    hdfs  299uW  REG 253,33       16 3407875 /data/dfs/dn/in_use.lock
    java     9982 jenkins  mem    REG 253,33   304183 1181098 /data/jenkins/plugins/github-branch-source/WEB-INF/lib/github-branch-source.jar

    如何查看一个进程有哪些io?

    # lsof -p $pid

    COMMAND   PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    java    19891 hdfs  cwd       DIR               0,38       400 1047556664 /opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-agent/process/806-hdfs-DATANODE
    java    19891 hdfs  rtd       DIR              253,1      4096          2 /
  • 相关阅读:
    Android WiFi系统【转】
    Android Wifi简单的梳理【转】
    深入浅出
    ubuntu16.04固定IP与设置DNS【转】
    Linux内核同步【转】
    android的GPS代码分析JNI如何HAL之间如何设置回调函数【转】
    基于android的GPS移植调用关系【转】
    【转】使用XCODE 的SOURCE CONTROL 做版本控制 (1)
    Objective-C 记录
    【转】Xcode重构功能怎么用我全告诉你
  • 原文地址:https://www.cnblogs.com/barneywill/p/11838674.html
Copyright © 2011-2022 走看看