Troubleshooting Linux high %iowait and many Processes stuck in D state
一套医院的Oracle数据库用户平时并发并不高,但时长出现数据库无法响应,导致应用活动并发数逐渐增加,OS load能达大几百甚至1000+, 这是一个4物理CPU,144core的硬件,CPU usage sys和user并不高,数据库查询v$session活动会话高时event是大部分进程on cpu, 操作系统层是%iowait高,去年时给西区分析过一个这类案例《Troubleshooting Performance SQL slow wait “on cpu” long time process “D” state》,这里简单记录一下这个案例。
AWR报告
Host CPU
CPUs | Cores | Sockets | Load Average Begin | Load Average End | %User | %System | %WIO | %Idle |
---|---|---|---|---|---|---|---|---|
144 | 72 | 4 | 85.34 | 101.46 | 7.8 | 2.4 | 22.3 | 89.7 |
Instance CPU
%Total CPU | %Busy CPU | %DB time waiting for CPU (Resource Manager) |
---|---|---|
9.8 | 95.0 | 0.0 |
IO Profile
Read+Write Per Second | Read per Second | Write Per Second | |
---|---|---|---|
Total Requests: | 669.8 | 381.0 | 288.8 |
Database Requests: | 412.2 | 319.6 | 92.6 |
Optimized Requests: | 0.0 | 0.0 | 0.0 |
Redo Requests: | 182.9 | 1.8 | 181.2 |
Total (MB): | 21.9 | 12.4 | 9.6 |
Database (MB): | 14.0 | 7.4 | 6.6 |
Optimized Total (MB): | 0.0 | 0.0 | 0.0 |
Redo (MB): | 2.9 | 1.6 | 1.2 |
Database (blocks): | 1,796.0 | 947.0 | 849.0 |
Via Buffer Cache (blocks): | 449.8 | 361.7 | 88.0 |
Direct (blocks): | 1,346.2 | 585.3 | 760.9 |
查看当时的D状态进程
#ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,state,wchan:40,comm|awk '{if($10=="D") print $0}' 1714 1714 TS - 0 19 34 13.6 Ds D sleep_on_page oracle 14185 14185 TS - 0 19 6 10.1 Ds D sleep_on_page oracle 17297 17297 TS - 0 19 34 21.7 Ds D sleep_on_page oracle 20496 20496 TS - 0 19 83 2.6 Ds D sleep_on_page oracle 20707 20707 TS - 0 19 1 0.4 Ds D sleep_on_page oracle 24176 24176 TS - 0 19 29 64.1 Ds D rmap_walk oracle 25004 25004 TS - 0 19 87 15.2 Ds D sleep_on_page oracle 25114 25114 TS - 0 19 11 0.6 Ds D sleep_on_page oracle 25254 25254 TS - 0 19 110 2.0 Ds D sleep_on_page oracle 25256 25256 TS - 0 19 112 0.0 Ds D sleep_on_page_killable oracle ...
perf报告
oracle 74851 [081] 4405932.369267: cycles: ffffffff812e24f0 memcpy ([kernel.kallsyms]) ffffffff810b67eb idle_balance ([kernel.kallsyms]) ffffffff816091d8 __schedule ([kernel.kallsyms]) ffffffff8160955d io_schedule ([kernel.kallsyms]) ffffffff81155f1e sleep_on_page ([kernel.kallsyms]) ffffffff81607330 __wait_on_bit ([kernel.kallsyms]) ffffffff81155ca6 wait_on_page_bit ([kernel.kallsyms]) ffffffff811b04da __migration_entry_wait.isra.37 ([kernel.kallsyms]) ffffffff811b07a3 migration_entry_wait ([kernel.kallsyms]) ffffffff81182efc handle_mm_fault ([kernel.kallsyms]) ffffffff8160f1e6 __do_page_fault ([kernel.kallsyms]) ffffffff8160f5ca do_page_fault ([kernel.kallsyms]) ffffffff8160b808 page_fault ([kernel.kallsyms]) 909e590 nsfull_pkt_rcv (/u01/app/oracle/11.2.0/bin/oracle) 9097d67 nsfull_brc (/u01/app/oracle/11.2.0/bin/oracle) 991d873 nsbrecv (/u01/app/oracle/11.2.0/bin/oracle) 99262b9 nioqrc (/u01/app/oracle/11.2.0/bin/oracle) 95a52b2 opikndf2 (/u01/app/oracle/11.2.0/bin/oracle) 1850157 opitsk (/u01/app/oracle/11.2.0/bin/oracle) 1854fed opiino (/u01/app/oracle/11.2.0/bin/oracle) 95a7bd5 opiodr (/u01/app/oracle/11.2.0/bin/oracle) oracle 138212 [023] 4405932.398687: cycles: ffffffff810a844e idle_cpu ([kernel.kallsyms]) ffffffff810b5260 find_busiest_group ([kernel.kallsyms]) ffffffff810b5bd8 load_balance ([kernel.kallsyms]) ffffffff810b67eb idle_balance ([kernel.kallsyms]) ffffffff816091d8 __schedule ([kernel.kallsyms]) ffffffff8160955d io_schedule ([kernel.kallsyms]) ffffffff81155f1e sleep_on_page ([kernel.kallsyms]) ffffffff81607330 __wait_on_bit ([kernel.kallsyms]) ffffffff81155ca6 wait_on_page_bit ([kernel.kallsyms]) ffffffff811b04da __migration_entry_wait.isra.37 ([kernel.kallsyms]) ffffffff811b07a3 migration_entry_wait ([kernel.kallsyms]) ffffffff81182efc handle_mm_fault ([kernel.kallsyms]) ffffffff8160f1e6 __do_page_fault ([kernel.kallsyms]) ffffffff8160f5ca do_page_fault ([kernel.kallsyms]) ffffffff8160b808 page_fault ([kernel.kallsyms]) 909e590 nsfull_pkt_rcv (/u01/app/oracle/11.2.0/bin/oracle) 9097d67 nsfull_brc (/u01/app/oracle/11.2.0/bin/oracle) 991d873 nsbrecv (/u01/app/oracle/11.2.0/bin/oracle) 99262b9 nioqrc (/u01/app/oracle/11.2.0/bin/oracle) 95a52b2 opikndf2 (/u01/app/oracle/11.2.0/bin/oracle) 1850157 opitsk (/u01/app/oracle/11.2.0/bin/oracle) 1854fed opiino (/u01/app/oracle/11.2.0/bin/oracle) 95a7bd5 opiodr (/u01/app/oracle/11.2.0/bin/oracle) oracle 28266 [078] 4405932.579419: cycles: ffffffff810ad3f8 tg_load_down ([kernel.kallsyms]) ffffffff810a5eb1 walk_tg_tree_from ([kernel.kallsyms]) ffffffff810b5d98 load_balance ([kernel.kallsyms]) ffffffff810b67eb idle_balance ([kernel.kallsyms]) ffffffff816091d8 __schedule ([kernel.kallsyms]) ffffffff8160955d io_schedule ([kernel.kallsyms]) ffffffff81155f1e sleep_on_page ([kernel.kallsyms]) ffffffff81607330 __wait_on_bit ([kernel.kallsyms]) ffffffff81155ca6 wait_on_page_bit ([kernel.kallsyms]) ffffffff811b04da __migration_entry_wait.isra.37 ([kernel.kallsyms]) ffffffff811b07a3 migration_entry_wait ([kernel.kallsyms]) ffffffff81182efc handle_mm_fault ([kernel.kallsyms]) ffffffff8160f1e6 __do_page_fault ([kernel.kallsyms]) ffffffff8160f5ca do_page_fault ([kernel.kallsyms]) ffffffff8160b808 page_fault ([kernel.kallsyms]) 97cd6b6 ttcrbur (/u01/app/oracle/11.2.0/bin/oracle)
不正常时间段iostat
zzz ***Wed Mar 29 09:28:21 CST 2023 avg-cpu: %user %nice %system %iowait %steal %idle 1.58 0.00 2.05 85.49 0.00 10.88 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 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-0 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-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 sdb 0.00 0.00 2.00 0.00 32.00 0.00 32.00 0.00 0.50 0.50 0.00 0.50 0.10 sdc 0.00 0.00 2.00 1.00 1.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 sdd 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 sde 0.00 0.00 5.00 0.00 80.00 0.00 32.00 0.00 0.40 0.40 0.00 0.40 0.20 sdf 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 sdg 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 sdh 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 sdi 0.00 0.00 1.00 0.00 4.00 0.00 8.00 0.00 1.00 1.00 0.00 1.00 0.10 sdj 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 sdk 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 sdl 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 sdm 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-3 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-4 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-5 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-6 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-7 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-8 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
注意: IOWAIT很高,但所有磁盘几乎无IOPS
正常时间段iostat
zzz ***Wed Mar 29 09:59:54 CST 2023 avg-cpu: %user %nice %system %iowait %steal %idle 13.74 0.00 3.92 15.80 0.00 66.53 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 3.00 0.00 119.00 0.00 2420.00 40.67 0.02 0.13 0.00 0.13 0.01 0.10 dm-0 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-1 0.00 0.00 0.00 123.00 0.00 2420.00 39.35 0.03 0.13 0.00 0.13 0.02 0.20 sdb 54.00 2.00 947.00 706.00 92665.00 3011.00 115.76 0.67 0.40 0.46 0.32 0.19 31.10 sdc 0.00 0.00 38.00 1.00 290.00 0.50 14.90 0.01 0.38 0.37 1.00 0.38 1.50 sdd 1.00 0.00 1068.00 145.00 46486.00 1192.00 78.61 0.35 0.29 0.29 0.35 0.20 24.80 sde 2.00 2.00 786.00 706.00 91048.00 3011.00 126.08 0.66 0.44 0.55 0.32 0.20 29.20 sdf 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 sdg 4.00 0.00 1071.00 145.00 46032.50 1192.00 77.67 0.33 0.27 0.26 0.34 0.20 24.40 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 sdh 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
mpstat
09:28:22 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:28:23 all 1.58 0.00 2.04 85.48 0.00 0.01 0.00 0.00 0.00 10.88 09:28:23 0 1.03 0.00 1.03 97.94 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 1 2.02 0.00 26.26 71.72 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 2 3.09 0.00 1.03 95.88 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 3 19.00 0.00 8.00 73.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 4 67.68 0.00 0.00 32.32 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 5 1.01 0.00 2.02 96.97 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 6 2.04 0.00 0.00 97.96 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 7 2.02 0.00 5.05 92.93 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 8 1.02 0.00 14.29 84.69 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 9 1.00 0.00 0.00 99.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 10 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 11 11.00 0.00 1.00 88.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 12 1.00 0.00 21.00 78.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 13 1.00 0.00 0.00 99.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 14 2.00 0.00 1.00 97.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 15 17.17 0.00 0.00 82.83 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 16 0.00 0.00 6.00 94.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 17 18.18 0.00 1.01 80.81 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 18 1.02 0.00 9.18 89.80 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 19 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 20 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 21 0.00 0.00 1.00 99.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 22 0.00 0.00 58.00 42.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 23 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 24 0.00 0.00 1.01 98.99 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 25 0.00 0.00 1.02 98.98 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 26 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 27 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 28 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:28:23 29 0.00 0.00 1.01 98.99 0.00 0.00 0.00 0.00 0.00 0.00 ...
vmstat
zzz ***Wed Mar 29 09:27:51 CST 2023 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 11 778 0 252811712 17140 30856932 0 0 360 116 0 0 4 0 94 1 0 18 577 0 252779168 17140 30861976 0 0 4084 1419 59377 48650 8 5 4 83 0 25 339 0 252690736 17140 30868320 0 0 39755 1276 142478 91409 19 6 10 66 0 zzz ***Wed Mar 29 09:28:21 CST 2023 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 47 714 0 252334208 17140 30941632 0 0 360 116 0 0 4 0 94 1 0 4 757 0 252286096 17140 30943040 0 0 21289 4495 155394 114065 10 5 11 75 0 8 994 0 252330752 17140 30943744 0 0 117 0 18919 17036 2 2 11 85 0 zzz ***Wed Mar 29 09:28:51 CST 2023 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 89 370 0 252071872 17140 31042652 0 0 360 116 0 0 4 0 94 1 0 4 818 0 251975072 17140 31045500 0 0 55641 5392 62121 57555 6 4 11 79 0 8 887 0 251975072 17140 31048296 0 0 50029 545 49308 54580 2 2 9 87 0 zzz ***Wed Mar 29 09:29:21 CST 2023 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 20 638 0 251564160 17140 31084888 0 0 360 116 0 0 4 0 94 1 0 11 647 0 251685920 17140 31093200 0 0 37714 6028 102041 68327 8 4 2 86 0 11 720 0 251641504 17140 31091376 0 0 37188 12527 78402 47231 6 3 1 90 0
top
top - 09:28:23 up 50 days, 23:24, 44 users, load average: 703.61, 442.45, 239.9 Tasks: 11357 total, 10 running, 11331 sleeping, 5 stopped, 11 zombie %Cpu(s): 2.0 us, 2.3 sy, 0.0 ni, 11.4 id, 84.3 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 52793187+total, 25231270+free, 24466102+used, 30958152 buff/cache KiB Swap: 16777212 total, 16777212 free, 0 used. 27390931+avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 72480 oracle 20 0 0.176t 28804 20512 D 61.2 0.0 0:06.93 oracle 19392 oracle 20 0 0.176t 22956 17880 S 38.0 0.0 6:14.24 oracle 77082 oracle 20 0 0.176t 27624 21148 R 34.9 0.0 0:01.36 oracle 75981 oracle 20 0 0.176t 29276 23424 D 28.7 0.0 0:09.42 oracle 78845 grid 20 0 38284 13444 1204 R 24.0 0.0 0:00.71 top 129341 oracle 20 0 0.176t 55100 43968 D 19.4 0.0 85:14.17 oracle 64356 oracle 20 0 0.176t 29664 23772 S 17.1 0.0 0:03.55 oracle 78860 grid 20 0 19768 1256 1004 D 17.1 0.0 0:00.39 ps 78929 root 20 0 121724 1820 936 D 17.1 0.0 0:00.22 pgrep 75851 oracle 20 0 0.176t 23484 17260 D 16.3 0.0 0:06.33 oracle 139123 oracle 20 0 0.176t 41132 35492 D 16.3 0.0 2:56.22 oracle 89880 oracle 20 0 0.176t 26708 21876 D 15.5 0.0 0:16.52 oracle 78775 root 20 0 121276 1016 844 D 14.0 0.0 0:00.29 ps 76053 oracle 20 0 0.176t 19324 15756 S 11.6 0.0 0:01.64 oracle 71742 oracle 20 0 0.176t 21216 17204 D 10.9 0.0 0:06.54 oracle 53764 oracle 20 0 0.176t 29992 23612 D 10.1 0.0 0:09.23 oracle 64717 oracle 20 0 0.176t 33384 30440 S 8.5 0.0 0:42.49 oracle
什么是iowait?
CPU 可以处于四种状态之一:user、sys、idle 或 iowait。 vmstat、iostat、sar等工具,以百分比的形式打印出这四种状态。从iostat或mpstat中看到%iowait看到不同cpu 上iowait很高,top命令的%wa也反应了这块, 为什么高 iowaits 在特定 CPU 上而不是在所有 CPU 之间平衡的任何具体原因?这是 Linux 内核的预期行为。 当任何 cpu 处理任何任务并且该任务需要执行 IO 事务时,cpu 会向 I/O 控制器发出请求,现在 I/O 控制器负责处理此请求,因此 IO 控制器将花费多少时间来完成请求 大部分时间该任务将处于“D”状态,并且 cpu 将只是等待 IO(称为 IO_WAIT)。如果系统有多个处理器,那么为该特定任务服务的 cpu 将等待 IO 并在这段时间内空闲,其他处理器将分配给其他正在运行的任务,因此查看特定 CPU 的 IOWAIT 是 Linux 内核的预期行为。处理D状态中的进程说明在 I/O 上被阻塞,在该进程内部除非它使用异步I/O,否则在任何I/O操作完成之前,它不可以被中断,处理挂起状态。
%iowait在系统有未完成的磁盘 I/O 请求期间,一个或多个 CPU 处于空闲状态的时间百分比。因此,%iowait 意味着从 CPU 的角度来看,没有任务可运行,但至少有一个 I/O 正在进行。 iowait 只是空闲时间的一种形式,在这种情况下无法安排任何事情。 该值在指示性能问题方面可能有用也可能无用,但它确实告诉用户系统处于空闲状态并且可能需要做更多的工作。准确地说,iowait 是接收和处理硬件中断所花费的时间占处理器滴答(processor ticks)的百分比。 软件中断通常单独标记为 %si。
需要注意的是,iowait 有时可能表示吞吐量瓶颈,而在其他时候,iowait 可能完全没有意义。有可能有一个具有高 iowait 的健康系统,但也有可能拥有一个没有 iowait 的瓶颈系统,举个例子,当CPU升级到更快时如CPU速度提升4倍:
CPU 升级之前 CPU 时间 = 40 毫秒 IO 时间 = 20 毫秒 总事务时间 = CPU + IO = 40 + 20 = 60 毫秒 %iowait = IO 时间/总时间 = 20/60 = 33% CPU 升级后 CPU 时间 = 40 毫秒/ 4 = 10 毫秒 IO 时间 = 20 毫秒 总事务时间 = CPU + IO = 10 + 20 = 30 毫秒 %iowait = 20/30 = 66%
在此示例中,尽管 %iowait 增加了 2 倍,但事务性能翻了一番。在这种情况下,%iowait 的绝对值是 I/O 问题的误导性指示。
一些您可能会觉得有用的工具
iostat,监控磁盘的服务时间
iotop(如果你的内核支持的话),监控每个进程的 IO 请求的分解
strace,查看进程发出的实际操作
什么是最小化 IO 等待时间的方法?
-确保您有可用的物理内存,以便操作系统可以在内存中缓存磁盘块
-将您的文件系统磁盘使用率保持在 80% 以下以避免过多的碎片
-调整你的文件系统
-使用电池供电的阵列控制器
-执行 io 操作时选择合适的缓冲区大小
分析思路
-快速查看 /etc/messages、/etc/dmesg、/etc/boot.log 和任何其他系统日志文件,寻找磁盘 I/O 错误、读/写操作失败、坏扇区 任何表明磁盘硬件问题的内容。
-如果找不到任何内容,请查找 IRQ 和磁盘控制器错误。
-还要查找内存错误和内核崩溃。
-高iowait的三个最可能的罪魁祸首是:磁盘坏,内存故障和网络问题(比如NFS)。
-消除硬件问题作为高 iowait 的可能原因后,下一步是查看固件和驱动程序
-对磁盘控制器固件特别感兴趣:性能不稳定和没有错误消息是固件问题的迹象。
-请非常努力地记住您最近是否进行了任何系统更改,尤其是需要重新启动的内容 , 例如内核升级。如果是这种情况,请回滚升级或搜索升级固件。
回到本案例数据库没有记录I/O慢的event,但%WA 和Load较大,ASH中活动会话达数百event为on cpu, 看操作系统层load和%iowait较高,但当时cpu并不繁忙,IOPS并不高,内存空闲,大量应用进程处理D状态且持续,说明操作系统进程在Linux 内核上的I/O请求一直未返回,原因在磁盘控制器、或存储链路、OS kernel bug概率较大。在以后遇到%iowait时需要结合其他指标判断系统的健康。
对不起,这篇文章暂时关闭评论。