我的是centos7 

首先安装使用 iostat -x 1 5 命令查看磁盘整体使用情况

  • 重点看 %util(磁盘利用率),接近 100% 表示磁盘瓶颈严重。

  • await(平均等待时间)和 svctm(服务时间)数值越高,说明磁盘响应越慢。

  • 结合磁盘设备,看哪个磁盘利用率高。

  • 总结判断:

    指标说明结果判断
    iotop 显示 mysqld 磁盘I/O高MySQL 是磁盘I/O主力是MySQL引起的瓶颈
    iostat %util 接近100%磁盘负载过重,响应时间长磁盘可能成瓶颈
    top %wa (IO wait) 高系统等待磁盘操作完成存在磁盘I/O瓶颈

执行

 iostat -x 1 5
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    3.00   61.00    48.00   348.00    12.38     1.86   28.08    1.67   29.38  13.42  85.90
sdc               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
sdb               0.00     0.00   35.00   58.00   560.00   620.00    25.38     7.71   80.89  179.89   21.16  10.75 100.00
dm-0              0.00     0.00   38.00   81.00   608.00  1124.00    29.11     8.67   71.28  165.82   26.93   8.40 100.00
dm-1              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
dm-2              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

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.21    0.00    1.20   16.30    0.00   79.30

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    3.00   63.00    48.00   232.00     8.48     1.09   17.68    2.00   18.43  12.41  81.90
sdc               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
sdb               0.00     0.00   52.00   71.00   832.00   808.00    26.67     7.04   59.91  120.13   15.80   8.13 100.00
dm-0              0.00     0.00   55.00   87.00   880.00  1232.00    29.75     7.45   54.75  113.69   17.48   7.04 100.00
dm-1              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
dm-2              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

发现util高达100% 说明io压力非常大

然后安装iotop

yum install -y epel-release
yum install -y iotop
执行 iotop -oP   

参数说明:

  • -o:只显示有 I/O 活动的进程

  • -P:以线程模式显示(更细粒度)

或者

iotop -ao  # 累积 IO 情况,方便看哪些进程长期占用 IO
[root@coy-a~]# ps aux --sort=-%mem | head -20
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
esuser     1129 23.8 22.9 420271272 9432996 ?   Ssl  Feb24 53647:32 /usr/local/lib/elasticsearch-7.16.2/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -XX:+ShowCodeDetailsInExceptionMessages -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j2.formatMsgNoLookups=true -Djava.locale.providers=SPI,COMPAT --add-opens=java.base/java.io=ALL-UNNAMED -Xms8g -Xmx8g -XX:+UseG1GC -Djava.io.tmpdir=/tmp/elasticsearch-15312320245934292381 -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -XX:MaxDirectMemorySize=4294967296 -XX:InitiatingHeapOccupancyPercent=30 -XX:G1ReservePercent=25 -Des.path.home=/usr/local/lib/elasticsearch-7.16.2 -Des.path.conf=/usr/local/lib/elasticsearch-7.16.2/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /usr/local/lib/elasticsearch-7.16.2/lib/* org.elasticsearch.bootstrap.Elasticsearch
root       8365  2.9 20.4 11916292 8426136 ?    Sl   Feb24 6518:50 /usr/bin/python /opt/coyapp/CaptchaPredcoyionService/app.py
root      87676  8.0  6.3 20946620 2628480 ?    Sl   09:36   5:20 java -jar /opt/coyapp/coy.jar --spring.config.location=conf/application-prod.yml
root     117526  0.4  5.3 2625304 2183508 ?     Ssl  Jul14 104:37 /opt/redis/redis-server 0.0.0.0:6379
root       8176  0.1  2.5 20687284 1057864 ?    Sl   Feb24 411:20 java -jar -DSUB_LOG_HOME=url /opt/coyapp/coyCollector.jar -n mysql -f /opt/coyapp/conf/flume-url.conf
root       8559  0.0  1.4 20059300 595904 ?     Sl   Feb24 213:07 java -jar /opt/coyapp/coyDataAnalysis.jar --spring.profiles.active=prod
root       8454  0.9  1.4 21004536 588988 ?     Sl   Feb24 2178:47 java -jar /opt/coyapp/coyDataGeneralization.jar --spring.profiles.active=prod
root       7182  0.3  1.0 17805992 421812 ?     Sl   Feb24 790:36 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre/bin/java -Djava.util.logging.config.file=/opt/coyapp/apache-tomcat-9.0.54/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/coyapp/apache-tomcat-9.0.54/bin/bootstrap.jar:/opt/coyapp/apache-tomcat-9.0.54/bin/tomcat-juli.jar -Dcatalina.base=/opt/coyapp/apache-tomcat-9.0.54 -Dcatalina.home=/opt/coyapp/apache-tomcat-9.0.54 -Djava.io.tmpdir=/opt/coyapp/apache-tomcat-9.0.54/temp org.apache.catalina.startup.Bootstrap start
root       8084  0.1  0.9 18293052 404360 ?     Sl   Feb24 393:37 java -jar -DSUB_LOG_HOME=bigscreen /opt/coyapp/coyCollector.jar -n mysql -f /opt/coyapp/conf/flume-bigScreen.conf
mysql     87504  0.9  0.8 4354064 357932 ?      Ssl  Jul29  11:31 /usr/sbin/mariadbd
root        878  0.2  0.6 10525768 281000 ?     Sl   Feb24 546:03 /agent/ubackup/uagent/bin/jre1.7/bin/java -Xms128m -Xmx512m -Xss512k -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -jar uagent.jar start
root       1768  2.7  0.5 583684 210640 ?       Sl   Feb24 6180:23 /data/dbAuditAgent/dbagent2.30/dbAgent
root       8428  0.0  0.4 4378500 179504 ?      Sl   Feb24   2:28 python /opt/coyapp/Dynamcoyhreshold/app.py
root       3504  0.0  0.3 4488816 137552 ?      Sl   Feb24 216:27 /usr/bin/gnome-shell
root       4277  0.0  0.2 1430864 109260 ?      Sl   Feb24  23:11 /usr/bin/gnome-software --gapplication-service
gdm        3390  0.1  0.2 4480924 87912 ?       Sl   Feb24 231:21 /usr/bin/gnome-shell
root      30683  0.3  0.1 4228644 63576 ?       Sl   Jul18  60:12 ./gov_defence_service -c config.xml -l runlog/run_log.log -e ALL -t ALL -s safe -m daemon
root       8325  0.0  0.1 3117780 51600 ?       S    Feb24   0:04 python /opt/coyapp/CaptchaPredcoyionService/app.py
gdm        3860  0.6  0.1 675520 47984 ?        Sl   Feb24 1425:56 /usr/libexec/gsd-color
在执行  pidstat -d 1 10
[root@a mysql]# pidstat -d 1 10
Linux 3.10.0-1160.45.1.el7.x86_64 (coy-APP)     07/30/2025      _x86_64_        (16 CPU)

03:54:49 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:50 PM  1004      1129     30.48   3847.62   3401.90  java

03:54:50 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:51 PM  1004      1129     16.00   1200.00    500.00  java
03:54:51 PM     0      8084      0.00     12.00      0.00  java
03:54:51 PM   988     40212      0.00      4.00      0.00  mariadbd

03:54:51 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:52 PM  1004      1129      0.00   4552.00   2564.00  java
03:54:52 PM   988     40212     16.00     36.00      0.00  mariadbd

03:54:52 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:53 PM  1004      1129      0.00   1192.00    496.00  java
03:54:53 PM   988     40212      0.00     40.00      0.00  mariadbd

03:54:53 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:54 PM  1004      1129     40.00   4680.00   3948.00  java
03:54:54 PM   988     40212      0.00     32.00      0.00  mariadbd
03:54:54 PM     0     87676      0.00      4.00      0.00  java

03:54:54 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:55 PM  1004      1129      0.00   2540.00    496.00  java
03:54:55 PM     0      7182      0.00      4.00      0.00  java
03:54:55 PM     0     30683      0.00      4.00      0.00  gov_defence_ser
03:54:55 PM   988     40212      0.00      4.00      0.00  mariadbd

03:54:55 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:56 PM  1004      1129      0.00   3000.00   2548.00  java
03:54:56 PM     0      8454      0.00      8.00      0.00  java
03:54:56 PM   988     40212      0.00      4.00      0.00  mariadbd
03:54:56 PM     0    114686      0.00      4.00      0.00  gov_defence_gua

03:54:56 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:57 PM  1004      1129      0.00   4368.00   2052.00  java
03:54:57 PM     0      8176      0.00      4.00      0.00  java

03:54:57 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:58 PM  1004      1129      0.00   1028.00   2264.00  java
03:54:58 PM   988     40212     32.00     12.00      0.00  mariadbd

03:54:58 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
03:54:59 PM  1004      1129      0.00    316.00    200.00  java
03:54:59 PM     0      1768      0.00      4.00      0.00  dbAgent
03:54:59 PM   988     40212      0.00     56.00      0.00  mariadbd

Average:      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
Average:     1004      1129      8.76   2678.21   1854.73  java
Average:        0      1768      0.00      0.40      0.00  dbAgent
Average:        0      7182      0.00      0.40      0.00  java
Average:        0      8084      0.00      1.19      0.00  java
Average:        0      8176      0.00      0.40      0.00  java
Average:        0      8454      0.00      0.80      0.00  java
Average:        0     30683      0.00      0.40      0.00  gov_defence_ser
Average:      988     40212      4.78     18.71      0.00  mariadbd
Average:        0     87676      0.00      0.40      0.00  java
Average:        0    114686      0.00      0.40      0.00  gov_defence_gua

发现根本原因:PID 1129 的 Java 进程(UID 1004)

  • 它平均写入达 ~2.7MB/s,其中不少是 小块写(高 IOPS)

  • kB_ccwr/s 也高(说明是缓存刷盘):1854.73 kB/s 是从内存刷到磁盘的量

  • 这个进程名是:java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 ... org.elasticsearch.bootstrap.Elasticsearch

然后我去ES查看了今天索引的数据量 发现今天有一个索引大小高达19G 并且还在持续增长   发现了问题所在尝试停掉给ES推送数据的代码  重启了数据库与jar包  系统异常缓慢的问题就恢复的正常

更多推荐