测试环境凌晨2点负载偏高, 2点到7点 IO 读偏高问题定位
文章目录
- 结论
- 内存参数优化建议
- 进程内存占用优化
- cdm 定时任务脚本优化
- kswapd 运行原理图
- 内核参数现状
- 查看定时任务
- 查看负载
- 查看 CPU
- 查看 page 问题
- 查看内存
- 基础知识
- `sar -u` 中 `%idle` 列比较小代表什么?
- `sar -q` 中 `runq-sz` 明显增长代表什么?
- 1. 指标含义回顾
- 2. 数据分析
- A. 时间段内的变化
- B. 整体判断
- 3. 原因分析
- 2025-3-8 号更新定位进展:
- 后续观察, 发现修改内核参数之后 , 凌晨2 点负载还是很高,
- 查看 osw 中 mpstat 信息
- 查看 IOSTAT
- 查看 pidstat
- 优化建议
结论
2025-03-06 初步定位进展:
凌晨 2 点 cds 库表清理的有定时任务, 需要访问数据库并申请内存, 该内存占用是压死骆驼的最后一根稻草. 内存不足导致触发 kswapd, 从而导致缓存频繁回收, 并且系统长时间处于内存不足, 导致 kswapd 长时间持续活动, 持续在回收 page 页面.
2025-03-08 更新定位进展:
上次 03.06 修改内核参数之后, 03.07 凌晨 02:00 还是出现负载持续偏高问题
定位原因, 是由于 业软 is 库业务层应该有一个定时任务, 每天凌晨2:00 会启动对 is.tbl_xxx 表的大批量清理操作
但是使用的是 delete 导致消耗大量内存以及 CPU), 同时严重阻塞后续业务对该表的写操作(新建子分区等), 该操作直到 凌晨 4点才完成, 后面堵塞才缓解
该清理操作对应函数 func_clean_tbl_xxx 需要尽快优化下方案
58 拷机环境也存在类似问题, 但是由于 58 环境是先 oom 业务挂了, 负载降下来了,
然后在发生的 大表 delete ,所以负载不像 57 那样居高不下
而 57 是还没 oom 但是内存消耗快没了, 然后来一个大表的 delete 给搞挂了
内存参数优化建议
-
vm.vfs_cache_pressure=60
-
vm.dirty_background_ratio = 2
-
vm.dirty_ratio=4
-
vm.min_free_kbytes = 90000
进程内存占用优化
cdm 定时任务脚本优化
1 2 * * * root flock -xn /tmp/autoclean_cdm_sub_table.lock -c /usr/local/bin/autoclean_cdm_sub_table.sh >/dev/null 2>&1
kswapd 运行原理图
内核参数现状
vm.min_free_kbytes = 67584 保证系统至少保留约 67MB 的空闲内存。对大内存系统来说,这个值可能偏低,当内存紧张时,容易触发页面回收。
vm.vfs_cache_pressure = 100 默认值,表示内核在内存紧张时会比较积极地回收 inode/dentry 缓存。这可能导致缓存被过早回收,从而增加页面扫描和“窃取”压力。
vm.dirty_ratio = 60 与 vm.dirty_background_ratio = 10 允许系统在内存中累积较多(高达 60%)的脏页才开始强制写回磁盘,而达到 10% 时仅启动后台写回。dirty_ratio 过高可能导致大量脏页长期滞留,等到系统压力增大时一次性大量刷新,进一步加剧内存和 I/O 压力。
查看定时任务
cat /etc/crontab59 23 * * * root /usr/local/bin/bk_pglog.sh >/dev/null 2>&1
1 2 * * * root flock -xn /tmp/autoclean_cdm_sub_table.lock -c /usr/local/bin/autoclean_cdm_sub_table.sh >/dev/null 2>&1
6 2 * * * root flock -xn /tmp/autoclean_operlog_and_event_record_cdm.lock -c /usr/local/bin/autoclean_operlog_and_event_record_cdm.sh >/dev/null 2>&1*/2 * * * * root /usr/local/sbin/mp_recovdiskspath.sh >/dev/null 2>&1*/10 * * * * root /bin/sh /usr/local/bin/ipConflictDetect.sh >/dev/null 2>&1*/10 * * * * root /bin/sh /usr/local/bin/ethInfo.sh >/dev/null 2>&130 1 * * * root /usr/local/bin/autoclean.sh >/dev/null 2>&1*/20 * * * * root /usr/local/bin/cleanhttpdlog.sh >/dev/null 2>&130 0 * * * root /program/bin/autoclean_vmlog.sh >/dev/null 2>&1
30 2 * * * root flock -xn /tmp/autoclean_ums_sub_table.lock -c /program/bin/autoclean_ums_sub_table.sh >/dev/null 2>&1
* * * * * root python /home/collect/nodeDaemon.py
00 23 * * * root sh /home/SSD_smartctl/Collect_SSD_SmartctlInfo.sh
查看负载
02:00:00 负载明显增高, runq-sz 运行进程数明显增高
sar -q -e "04:00:00"01:22:02 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
01:24:01 AM 12 6128 12.74 17.84 26.02 1
01:26:02 AM 35 6138 19.14 19.46 25.66 1
01:28:02 AM 28 6135 18.07 19.07 24.76 0
01:30:01 AM 10 6156 10.66 16.30 23.08 0
01:32:01 AM 28 6140 9.87 15.56 22.09 0
01:34:01 AM 4 6129 12.00 14.37 20.85 0
01:36:02 AM 55 6117 10.30 13.52 19.79 0
01:38:01 AM 3 6128 16.83 14.52 19.36 0
01:40:02 AM 22 6142 15.17 13.97 18.53 1
01:42:01 AM 13 6132 26.22 17.04 18.99 0
01:44:01 AM 8 6140 15.26 15.66 18.22 0
01:46:01 AM 5 6135 10.84 13.80 17.23 1
01:48:01 AM 9 6155 13.21 14.25 17.00 2
01:50:01 AM 33 6161 10.59 12.94 16.18 0
01:52:01 AM 3 6131 15.84 13.65 16.01 0
01:54:02 AM 0 6122 11.89 13.65 15.77 3
01:56:01 AM 5 6133 9.06 11.79 14.82 0
01:58:02 AM 3 6134 5.18 9.38 13.57 0
02:00:02 AM 85 6155 10.72 9.65 13.13 0
02:02:02 AM 59 6146 47.31 24.27 18.09 0
02:04:02 AM 32 6138 59.02 36.18 23.21 0
02:06:03 AM 75 6164 64.89 46.36 28.52 2
02:08:01 AM 46 6168 63.75 52.60 33.02 0
02:10:03 AM 50 6181 59.33 54.44 36.04 0
02:12:03 AM 58 6163 69.92 60.11 40.34 0
02:14:01 AM 57 6183 70.88 63.76 44.07 0
02:16:03 AM 51 6166 62.77 62.74 46.07 1
02:18:02 AM 51 6166 60.63 61.68 47.70 1
02:20:02 AM 67 6174 64.13 62.98 49.89 0
查看 CPU
02:00 开始 , 系统占用 CPU 明显增长,
sar -u -e "04:00:00"
1:22:02 AM CPU %user %nice %system %iowait %steal %idle
01:24:01 AM all 25.78 0.00 48.15 2.19 0.00 23.89
01:26:02 AM all 33.09 0.00 50.33 0.77 0.00 15.81
01:28:02 AM all 31.41 0.00 49.12 1.61 0.00 17.86
01:30:01 AM all 26.79 0.00 49.22 1.54 0.00 22.45
01:32:01 AM all 29.46 0.00 52.87 1.25 0.00 16.41
01:34:01 AM all 25.79 0.00 48.44 1.79 0.00 23.98
01:36:02 AM all 26.06 0.00 48.30 2.12 0.00 23.52
01:38:01 AM all 27.34 0.00 48.65 1.33 0.00 22.68
01:40:02 AM all 26.22 0.00 48.57 2.06 0.00 23.15
01:42:01 AM all 29.70 0.00 49.65 1.18 0.00 19.46
01:44:01 AM all 27.32 0.00 48.73 1.99 0.00 21.96
01:46:01 AM all 25.15 0.00 48.59 2.45 0.00 23.82
01:48:01 AM all 28.51 0.00 49.47 1.37 0.00 20.65
01:50:01 AM all 24.63 0.00 48.27 0.85 0.00 26.24
01:52:01 AM all 25.15 0.00 49.60 1.45 0.00 23.79
01:54:02 AM all 27.87 0.00 48.97 2.68 0.00 20.47
01:56:01 AM all 26.08 0.00 48.29 1.28 0.00 24.35
01:58:02 AM all 24.59 0.00 48.58 0.97 0.00 25.86
02:00:02 AM all 25.84 0.06 48.29 1.12 0.00 24.69
02:02:02 AM all 33.43 0.00 66.02 0.24 0.00 0.31
02:04:02 AM all 32.67 0.00 66.96 0.11 0.00 0.26
02:06:03 AM all 32.43 0.00 67.14 0.12 0.00 0.31
02:08:01 AM all 33.37 0.00 66.04 0.30 0.00 0.29
02:10:03 AM all 32.69 0.00 66.87 0.12 0.00 0.32
02:12:03 AM all 32.08 0.00 67.02 0.58 0.00 0.32
02:14:01 AM all 32.55 0.00 66.72 0.41 0.00 0.32
02:16:03 AM all 32.66 0.00 66.39 0.63 0.00 0.32
02:18:02 AM all 32.77 0.00 66.76 0.13 0.00 0.33
02:20:02 AM all 32.56 0.00 67.01 0.09 0.00 0.34
02:22:03 AM all 32.59 0.00 66.79 0.28 0.00 0.34
02:24:03 AM all 32.64 0.00 66.91 0.08 0.00 0.37
02:26:01 AM all 32.66 0.00 66.51 0.51 0.00 0.32
02:28:03 AM all 33.00 0.00 66.55 0.10 0.00 0.35
02:30:03 AM all 33.09 0.00 66.45 0.17 0.00 0.29
02:32:01 AM all 32.41 0.00 67.24 0.11 0.00 0.24
02:34:02 AM all 33.17 0.00 65.85 0.66 0.00 0.32
02:36:02 AM all 32.80 0.00 66.53 0.36 0.00 0.31
02:38:01 AM all 33.12 0.00 66.50 0.09 0.00 0.29
02:40:03 AM all 32.35 0.00 66.42 0.90 0.00 0.33
02:42:02 AM all 32.46 0.00 67.13 0.09 0.00 0.33
02:44:01 AM all 32.66 0.00 66.77 0.22 0.00 0.35
2:00 开始 CPU 空闲减少
查看 page 问题
发现 02:00 到 07:00 期间存在 pgscank 与 pgscand, 说明是内存问题导致触发 kswapd, 此时需要释放 page 缓存, 导致 IO 占用持续偏高
sar -B -e "04:00:00"01:22:02 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
01:24:01 AM 5197.99 8962.91 16615.99 0.02 28313.34 0.00 0.00 0.00 0.00
01:26:02 AM 5776.11 9348.54 16384.63 0.34 27920.66 0.00 0.00 0.00 0.00
01:28:02 AM 5660.17 9022.45 17374.45 0.03 28826.93 0.00 1.49 2.95 197.77
01:30:01 AM 5232.28 9176.93 17427.27 0.04 28514.83 0.00 1.93 3.79 196.54
01:32:01 AM 5524.08 9348.81 19395.81 0.10 30262.41 0.00 0.57 1.14 200.00
01:34:01 AM 5374.02 9144.33 17878.34 0.11 29316.86 0.00 0.00 0.00 0.00
01:36:02 AM 5322.65 9117.79 17016.48 0.04 28740.85 1.88 0.00 3.74 199.12
01:38:01 AM 5186.11 9183.83 18239.23 0.03 29957.52 9.66 0.00 19.15 198.27
01:40:02 AM 5195.23 9079.21 18039.58 0.04 29703.21 86.09 1.19 170.81 195.69
01:42:01 AM 5324.29 9080.17 17994.31 0.23 28940.35 0.00 0.00 0.00 0.00
01:44:01 AM 5194.28 8994.48 17408.72 0.12 28212.68 345.12 5.90 592.10 168.68
01:46:01 AM 5973.30 9217.72 17314.27 0.04 29737.08 41.51 0.00 70.32 169.41
01:48:01 AM 5378.81 9491.00 16858.73 0.03 28213.15 0.00 0.00 0.00 0.00
01:50:01 AM 5191.45 9088.72 17162.74 0.02 28138.39 0.00 0.00 0.00 0.00
01:52:01 AM 5269.94 9105.51 19368.25 0.37 31037.74 425.58 5.63 737.83 171.11
01:54:02 AM 5353.49 9089.87 17064.41 0.06 28150.74 0.00 0.47 0.91 192.98
01:56:01 AM 5195.24 9014.21 17970.55 0.07 29250.91 0.00 1.73 3.27 189.32
01:58:02 AM 5225.45 9247.76 16555.74 0.07 27930.67 0.00 1.93 3.61 187.12
02:00:02 AM 7284.79 9048.23 18575.01 0.85 29273.32 0.00 0.50 0.90 180.00
02:02:02 AM 189252.71 10174.79 32390.86 25.80 73761.14 49356.13 41.34 94827.21 191.97
02:04:02 AM 218484.27 10045.40 28107.72 33.51 80492.35 56097.09 43.25 107284.64 191.10
02:06:03 AM 230998.35 9599.70 25345.68 38.18 81694.88 60267.96 64.20 114448.15 189.70
02:08:01 AM 211964.52 10349.74 26996.94 26.62 78372.10 53526.92 55.41 102873.41 191.99
02:10:03 AM 228379.63 9752.52 25365.53 33.74 82086.15 59378.80 21.28 113266.34 190.68
02:12:03 AM 241380.13 9993.21 30543.66 30.92 84235.03 61701.80 23.41 118260.62 191.59
02:14:01 AM 226257.52 10118.29 26532.18 34.73 81142.41 59086.91 44.96 112637.06 190.48
02:16:03 AM 209136.49 9917.97 25057.04 32.77 76652.65 54043.41 14.20 102686.89 189.96
02:18:02 AM 233901.26 9667.18 27978.27 32.09 82932.48 58692.98 38.16 112416.83 191.41
02:20:02 AM 229530.14 9942.72 27076.34 33.81 82376.01 60593.30 50.81 115770.89 190.90
02:22:03 AM 233204.72 9930.71 26341.81 32.97 83280.90 60277.48 4.27 115139.57 191.00
02:24:03 AM 239393.21 9933.52 27168.23 34.53 83589.13 61314.83 19.96 117042.01 190.82
02:26:01 AM 232571.40 10016.68 26313.18 31.68 81516.45 59768.64 53.41 114499.76 191.40
02:28:03 AM 229378.18 9784.37 26250.88 31.77 81477.82 59597.74 25.85 113784.65 190.84
02:30:03 AM 230133.94 9970.47 26489.17 31.70 82183.64 59457.25 19.99 113822.40 191.37
02:32:01 AM 234821.13 10055.31 28269.88 37.04 82730.06 60583.08 24.96 115273.12 190.19
02:34:02 AM 221019.07 9956.49 25605.65 34.49 79562.33 56759.21 32.40 107979.84 190.13
02:36:02 AM 224352.33 10105.14 25996.27 34.10 80373.11 58697.44 6.97 111769.16 190.39
02:38:01 AM 234936.71 10110.21 24433.12 38.55 81955.74 61220.37 26.05 116024.26 189.44
02:40:03 AM 223907.10 9775.57 26128.79 41.69 80267.52 58990.98 24.90 111397.45 188.76
02:42:02 AM 239132.01 10023.27 25605.48 41.59 83134.61 61992.12 37.02 117352.28 189.19
02:44:01 AM 230924.98 9975.85 25420.24 39.88 81345.45 60502.43 12.12 114437.09 189.1102:44:01 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
02:46:02 AM 238002.19 10106.32 24647.07 39.92 83340.16 60692.26 24.90 115013.93 189.43
02:48:02 AM 220620.87 9861.94 27666.17 30.60 79866.84 57975.91 38.07 110987.62 191.31
02:50:02 AM 237934.01 10110.24 25626.61 41.30 83163.40 62408.98 5.33 118106.07 189.23
02:52:02 AM 231019.44 9682.03 26945.00 39.41 81273.75 59929.54 18.53 113393.13 189.15
02:54:03 AM 241209.98 9766.25 25781.26 40.85 83492.84 63108.57 47.89 119606.99 189.38
02:56:03 AM 223677.69 10169.80 27866.89 27.99 81718.18 56833.91 1.59 109195.96 192.13
02:58:02 AM 227169.85 9817.44 28290.39 26.46 81549.42 58360.46 37.98 112280.15 192.27
03:00:02 AM 231550.85 10271.28 26461.50 37.04 82331.34 59929.79 25.79 113947.48 190.05
03:02:02 AM 223198.66 9949.42 27408.65 34.37 80629.09 57973.47 8.15 110855.73 191.19
03:04:02 AM 219460.19 9666.38 27841.13 34.36 81003.23 55149.13 14.89 105297.13 190.88
03:06:02 AM 222626.78 10081.77 28173.44 33.45 81308.11 58651.44 25.35 112276.17 191.35
03:08:02 AM 238410.49 9897.31 26881.08 41.07 83930.03 61767.93 8.27 116981.74 189.36
03:10:03 AM 242434.09 9884.06 29949.08 32.70 85673.65 62719.31 7.16 120350.26 191.87
03:12:02 AM 233375.77 10324.49 25728.75 40.48 82020.68 59508.98 36.84 112645.34 189.17
03:14:02 AM 234429.24 9785.98 28687.43 32.54 83799.83 61027.26 58.08 116833.24 191.26
03:16:03 AM 225610.56 9923.69 28841.22 32.48 83285.60 59028.31 43.88 112627.30 190.66
03:18:02 AM 244119.63 10058.98 26331.91 43.88 84548.25 63941.18 25.80 120810.13 188.86
03:20:02 AM 244111.47 9832.89 25594.48 39.57 84609.59 63122.45 22.25 119846.21 189.80
03:22:03 AM 241499.87 10073.44 28205.16 36.45 84602.94 63207.27 10.52 120271.51 190.25
03:24:02 AM 249006.40 10074.26 25401.11 44.07 85489.76 65056.09 33.50 123011.32 188.99
03:26:01 AM 224998.55 10076.51 26649.14 35.99 80176.13 58457.10 31.04 110944.51 189.69
03:28:02 AM 233062.88 9754.27 25705.78 34.83 82149.05 60089.79 9.99 114663.11 190.79
03:30:02 AM 245434.52 10186.91 29012.09 39.02 85254.84 64420.01 34.26 122533.59 190.11
03:32:01 AM 223906.64 10024.98 24205.33 41.89 79920.52 58551.77 194.05 110782.48 188.58
03:34:00 AM 234453.97 9981.27 26223.96 38.66 83118.99 60187.94 71.72 114468.45 189.96
03:36:00 AM 242870.35 10006.33 28066.29 39.98 84809.23 63950.93 35.84 121496.33 189.88
03:38:00 AM 237378.79 9760.39 26178.37 38.27 83716.84 60505.33 292.77 115583.27 190.11
03:40:01 AM 238217.29 9974.79 29025.71 27.74 84300.41 61444.52 131.32 118425.92 192.33
03:42:00 AM 229421.89 9841.09 27677.59 32.18 81535.93 59353.38 106.25 113903.44 191.56
03:44:00 AM 235659.42 10047.12 25874.01 35.26 82483.92 61042.97 90.44 116498.42 190.56
03:46:00 AM 241568.12 10073.08 27174.38 36.93 84791.50 62850.90 99.68 120080.86 190.75
03:48:00 AM 232770.73 10253.98 25452.63 40.25 81795.15 60811.40 135.36 115170.04 188.97
03:50:00 AM 241255.46 9669.60 29348.67 33.99 86673.51 62119.65 185.05 119198.77 191.32
03:52:03 AM 232807.11 10080.56 26700.93 38.28 82666.78 60792.32 200.79 115848.73 189.94
03:54:02 AM 240074.97 9994.40 27227.26 37.88 85098.61 60460.08 181.21 115401.71 190.30
03:56:01 AM 236421.34 9958.10 29824.68 28.25 83978.98 61895.20 88.65 119413.33 192.65
03:58:02 AM 231771.83 10013.60 25949.87 39.11 82607.85 60249.79 106.26 114344.98 189.45
04:00:02 AM 229500.17 9903.87 27395.63 31.80 83062.03 59326.86 68.80 113764.42 191.54
04:02:03 AM 230452.00 9759.34 27793.68 39.46 82901.07 60075.99 113.85 114689.69 190.55
04:04:03 AM 224710.17 10205.16 28433.91 34.60 81975.87 57481.58 123.43 110338.50 191.54
04:06:03 AM 241778.75 9765.10 28372.75 40.20 84776.71 62776.29 216.96 119717.78 190.0504:06:03 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
04:08:01 AM 233101.45 10365.24 26305.21 37.81 82234.57 61037.16 188.17 116325.80 190.00
04:10:02 AM 240311.68 10013.63 25938.92 39.22 85335.97 62084.00 334.47 118758.98 190.26
04:12:02 AM 245208.51 9839.95 32519.90 36.62 85229.01 62681.56 123.82 119849.75 190.83
04:14:01 AM 221905.97 10125.72 28473.03 29.23 81392.67 57271.75 105.51 110081.62 191.86
04:16:02 AM 227635.44 10053.32 26712.28 31.78 81607.70 58923.44 150.74 112969.84 191.23
04:18:03 AM 232821.37 10135.33 26712.10 33.64 82706.98 60737.86 76.16 116096.56 190.90
04:20:01 AM 248850.05 10160.20 28600.56 37.67 86426.67 64564.03 160.21 123516.74 190.84
04:22:02 AM 237825.67 9993.54 27288.90 37.66 84139.40 61422.50 98.56 116847.89 189.93
04:24:02 AM 238897.51 9667.63 25805.79 41.19 83736.15 61810.78 144.56 117505.05 189.66
04:26:01 AM 232233.23 9969.08 27079.09 30.11 82030.69 59962.32 74.56 115036.22 191.61
04:28:02 AM 234745.18 9946.47 28970.80 32.91 83315.84 60192.44 60.77 115313.89 191.38
04:30:02 AM 237817.56 10244.07 27165.61 37.17 84184.15 62851.59 90.94 119819.70 190.36
04:32:01 AM 241009.01 9819.85 26075.21 42.97 83994.15 62851.04 90.07 118856.93 188.84
04:34:02 AM 240051.76 9955.12 26192.98 44.94 83964.55 63016.13 132.51 119425.27 189.12
04:36:02 AM 237526.45 10134.25 29232.92 36.04 85236.54 61287.33 122.06 116910.80 190.38
04:38:01 AM 242488.23 9784.50 27813.07 32.88 85336.99 61944.99 86.59 118839.59 191.58
04:40:03 AM 226001.18 10157.62 26915.20 30.51 81469.86 59002.73 52.98 113058.47 191.44
04:42:03 AM 248341.21 10020.78 26961.68 42.25 85495.21 64941.33 104.98 123125.80 189.29
04:44:01 AM 234305.48 10034.61 26924.33 32.76 83295.65 59669.80 90.40 114074.38 190.89
04:46:02 AM 229100.70 9935.06 27181.63 30.43 82840.36 59711.23 78.06 114801.76 192.01
04:48:03 AM 240222.94 9937.87 27726.01 39.92 83798.38 62537.02 94.81 118788.57 189.66
04:50:01 AM 242674.18 9918.65 26952.65 41.13 84137.77 63166.38 149.06 120096.31 189.68
04:52:03 AM 235939.21 10033.71 27766.58 33.14 84481.86 60839.02 103.19 116603.80 191.34
04:54:03 AM 242067.12 10092.30 25993.42 42.84 84011.13 63307.98 149.41 119953.33 189.03
04:56:01 AM 244903.34 10077.13 28636.87 36.73 85818.55 62872.08 121.32 120335.34 191.03
04:58:03 AM 234622.73 9777.53 25967.34 37.18 82899.27 60666.31 93.03 115655.27 190.35
05:00:02 AM 235600.47 10345.94 28591.42 30.43 83439.71 61030.55 77.94 117225.12 191.83
05:02:02 AM 219914.64 9977.76 26779.04 39.64 80187.65 57113.41 76.53 108464.10 189.66
05:04:02 AM 232141.99 10081.78 28662.98 36.47 83489.02 58897.98 162.95 112835.98 191.05
05:06:02 AM 225313.15 10014.13 28734.71 30.68 81159.48 58471.16 73.73 112240.70 191.72
05:08:01 AM 234743.01 9982.53 26111.58 32.65 82848.00 60950.23 66.97 116706.76 191.27
05:10:02 AM 236861.23 9737.32 26279.13 37.16 83419.54 61659.58 93.87 117670.70 190.55
05:12:02 AM 257445.98 9942.30 31335.46 43.82 89062.96 67117.62 162.01 127706.19 189.81
05:14:01 AM 235897.69 9950.72 26824.27 32.63 83784.62 59997.47 85.08 114976.82 191.36
05:16:03 AM 240280.61 10257.12 29852.94 34.71 84839.55 63139.94 69.74 120596.54 190.79
05:18:02 AM 228226.70 9903.02 26080.90 33.85 81330.23 59111.94 58.32 112864.54 190.75
05:20:02 AM 239115.17 9588.28 25675.70 38.95 84006.22 62443.02 111.68 118862.88 190.01
05:22:02 AM 250500.43 10172.64 28447.65 41.47 86368.10 65427.21 126.29 124402.33 189.77
05:24:03 AM 230284.04 9895.45 26810.08 29.20 81578.02 58928.07 63.02 113128.02 191.77
05:26:03 AM 237537.76 10237.31 27772.67 33.43 83578.56 62148.57 59.43 118997.75 191.29
05:28:03 AM 239415.58 9983.71 28018.71 34.10 83705.34 61396.23 91.04 117305.62 190.7805:28:03 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
05:30:02 AM 233277.87 10030.98 27686.62 29.35 83399.72 59768.36 45.96 114875.28 192.05
05:32:01 AM 225000.72 9792.32 28940.49 25.24 81634.31 58568.28 41.38 112981.52 192.77
05:34:02 AM 237316.95 9835.89 27996.06 36.49 83751.73 62032.89 120.74 118565.09 190.76
05:36:02 AM 235168.83 10113.23 27195.59 34.04 83867.75 61051.28 64.80 116686.22 190.93
05:38:01 AM 238818.71 10149.21 26255.13 42.59 83170.41 62550.59 48.17 118276.42 188.94
05:40:02 AM 244402.45 9988.58 30077.13 37.31 86102.27 63151.43 35.57 120573.84 190.82
05:42:02 AM 234156.62 9827.40 28627.90 29.83 84745.94 60303.61 39.48 115806.77 191.91
05:44:01 AM 246970.27 9869.97 27520.38 40.29 85220.67 65345.46 27.43 123906.08 189.54
05:46:02 AM 244890.62 10072.72 27067.37 35.20 84815.79 63109.99 46.48 120409.36 190.65
05:48:02 AM 234034.87 10345.99 26027.64 37.24 82773.29 61534.98 55.52 117039.50 190.03
05:50:02 AM 251526.82 10047.00 29435.66 40.56 86580.22 64880.97 56.39 123443.35 190.10
05:52:03 AM 233780.51 9870.99 27794.69 32.51 83507.02 61389.35 24.28 117537.68 191.39
05:54:02 AM 231386.82 9709.62 27066.61 31.24 83104.24 58801.06 35.43 112814.97 191.74
05:56:01 AM 236922.66 10030.96 30059.99 28.95 83566.03 60628.26 16.51 116667.08 192.38
05:58:03 AM 229653.29 9949.14 27248.71 28.40 82292.78 59999.12 7.08 115315.87 192.17
06:00:02 AM 241505.05 10037.93 30024.52 31.35 84713.55 62007.10 26.35 119085.74 191.97
06:02:02 AM 224384.97 9953.54 27913.74 39.16 81692.50 58828.97 48.23 111949.16 190.14
06:04:02 AM 233746.12 10128.73 29192.96 46.88 84021.12 61812.74 90.66 117044.22 189.08
06:06:02 AM 237397.14 9688.08 26574.03 44.82 83004.02 62373.45 45.88 117778.56 188.69
06:08:02 AM 249827.53 9936.75 26454.45 45.72 86161.92 65876.90 34.23 124482.06 188.86
06:10:02 AM 260096.81 10208.11 29197.67 46.29 88512.01 67945.65 69.25 128465.82 188.88
06:12:03 AM 255058.62 10072.45 31025.57 38.46 88240.47 66423.03 42.24 126800.00 190.78
06:14:01 AM 229233.76 10116.64 26477.40 36.06 81513.62 59938.56 37.04 114017.47 190.11
06:16:02 AM 246570.64 9893.14 27070.19 33.72 85387.28 63171.07 17.21 120812.82 191.19
06:18:03 AM 237711.68 9646.60 28618.25 31.12 83525.98 62264.86 2.64 119233.42 191.49
06:20:02 AM 236076.57 9978.51 26518.49 32.13 83483.49 60294.70 8.10 115112.72 190.89
06:22:03 AM 245261.17 10098.34 30431.90 39.43 86399.12 65574.00 61.04 124866.00 190.24
06:24:02 AM 232883.24 10030.37 27267.64 29.37 82441.77 59645.27 6.92 114457.26 191.87
06:26:01 AM 220228.08 10015.37 26907.63 28.21 79572.37 56200.03 12.91 107727.03 191.64
06:28:02 AM 237427.74 9606.56 28608.55 34.90 84022.36 62480.91 31.99 119331.94 190.89
06:30:02 AM 232508.83 10254.05 28598.24 30.91 83170.78 60405.27 11.26 115690.95 191.49
06:32:01 AM 238702.99 10018.20 26323.54 44.89 83198.29 63203.64 66.50 119190.21 188.38
06:34:02 AM 233824.23 10264.17 26305.45 44.89 82856.43 61041.31 21.28 114972.70 188.29
06:36:02 AM 227738.85 10043.34 27262.47 35.36 82498.15 59194.48 35.04 112684.17 190.25
06:38:01 AM 239906.51 9802.22 28015.03 29.57 84207.19 61942.64 51.46 119085.98 192.09
06:40:02 AM 238539.89 9754.92 31019.26 32.33 85177.92 62174.44 20.83 119067.28 191.44
06:42:03 AM 252831.03 9810.89 25741.69 52.49 86985.91 66555.39 14.44 124899.24 187.62
06:44:01 AM 237782.92 10293.87 28541.14 29.07 83744.04 61745.41 16.24 118498.39 191.86
06:46:03 AM 241035.41 10174.72 26673.17 48.68 84196.49 64229.37 74.13 120578.33 187.51
06:48:02 AM 254104.01 10212.46 26348.00 51.55 86882.88 67165.42 42.23 126181.91 187.75
06:50:02 AM 243855.51 9781.26 26393.60 40.36 85227.87 63287.06 19.99 119999.70 189.5506:50:02 AM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
06:52:03 AM 236778.85 9936.51 28164.80 34.30 83144.60 60902.57 22.05 116351.63 190.98
06:54:03 AM 228624.59 10001.85 27121.60 26.22 81313.52 58917.05 20.27 113513.22 192.60
06:56:02 AM 242141.83 10334.42 26284.08 41.85 84604.74 64325.78 36.33 122116.31 189.73
06:58:02 AM 260110.85 9922.25 28821.85 47.54 88732.23 67674.04 96.83 127918.45 188.75
07:00:02 AM 228506.74 10422.04 27445.33 35.18 82592.00 60381.47 38.99 114975.43 190.29
07:02:03 AM 232661.58 9950.82 27727.71 38.81 83969.87 60201.00 111.29 115110.59 190.86
07:04:01 AM 161202.37 9837.33 25053.22 35.42 66581.70 41823.88 30.02 78782.80 188.23
07:06:02 AM 5187.08 9396.16 15228.58 1.14 29231.25 540.96 2.82 872.72 160.49
07:08:01 AM 3631.99 9197.18 17131.18 0.14 28442.76 9.03 1.50 17.76 168.61
07:10:01 AM 3477.28 8922.05 17963.02 0.09 27932.44 0.00 1.05 1.20 114.29
07:12:01 AM 47121.20 9728.15 26507.58 5.50 42616.80 11248.94 27.55 21214.01 188.13
07:14:01 AM 4516.58 9048.75 17825.01 0.41 29285.96 429.57 3.18 814.16 188.14
07:16:01 AM 4273.04 9538.29 17832.47 0.31 30016.55 574.89 3.13 1104.53 191.09
07:18:02 AM 4489.83 9142.78 17973.13 0.43 28578.88 51.29 1.75 96.61 182.15
07:20:01 AM 3418.54 9130.28 16962.25 0.06 27137.98 3.93 1.74 11.29 199.41
07:22:02 AM 3440.73 9235.76 17834.96 0.08 28024.22 0.00 1.99 3.95 198.34
07:24:01 AM 3444.53 8971.70 17571.87 0.03 27676.88 3.51 2.42 11.83 199.44
07:26:02 AM 3425.76 9249.26 16715.59 0.09 26878.55 4.03 1.34 10.72 199.38
07:28:01 AM 3362.68 9000.07 17378.52 0.02 27288.74 3.70 2.35 12.02 198.62
07:30:01 AM 3408.72 9225.47 17384.66 0.04 27463.07 4.49 0.56 7.87 155.96
07:32:01 AM 3366.41 9218.28 17124.26 0.05 27755.90 66.11 3.84 123.55 176.63
07:34:01 AM 3367.40 9113.57 17730.39 0.08 27984.11 13.29 1.90 29.83 196.38
07:36:02 AM 3454.11 9486.30 18151.06 0.34 30118.72 674.26 1.77 1210.97 179.13
07:38:01 AM 3492.41 9065.79 18288.06 0.09 28498.76 11.44 0.43 21.37 180.06
07:40:02 AM 3419.26 9030.56 19098.42 0.07 29079.02 0.69 2.00 5.17 192.62
07:42:01 AM 3402.16 9127.07 18551.14 0.02 28442.76 0.00 0.44 0.85 192.45
07:44:01 AM 3380.39 9052.03 18033.27 0.03 28865.92 0.00 1.94 2.79 143.72
07:46:02 AM 3371.31 9276.79 18777.45 0.12 29861.42 167.48 6.43 280.81 161.46
07:48:01 AM 3366.51 9292.77 18849.36 0.03 28941.81 7.91 0.77 16.31 187.85
07:50:01 AM 3359.75 8990.85 17269.16 0.02 27833.15 2.94 1.91 9.65 198.97
07:52:01 AM 3362.93 9298.53 17994.08 0.03 27868.62 0.00 2.05 4.09 199.19
07:54:02 AM 3397.59 9119.10 17923.21 0.04 27663.33 3.47 1.11 9.11 198.91
07:56:01 AM 3554.61 9136.15 18658.38 0.11 29453.99 52.65 2.99 97.93 176.00
07:58:02 AM 3374.40 9268.72 17117.21 0.02 27759.90 4.97 1.26 12.00 192.83
Average: 152336.17 9795.84 23897.51 23.16 63874.82 39110.58 43.05 74588.98 190.50
查看内存
sar -r
01:22:02 AM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
01:24:01 AM 919300 2116256 11229968 73.18 19628 2601100 25413940 165.61 1749220 11596944 4172
01:26:02 AM 741004 2014832 11331392 73.84 20832 2675620 25507120 166.22 1752308 11759772 7312
01:28:02 AM 667096 2025712 11320260 73.77 21956 2758692 25498896 166.16 1755248 11829088 10840
01:30:01 AM 608236 2003996 11352056 73.98 23332 2784200 25555892 166.54 1753300 11897068 8840
01:32:01 AM 595184 2030492 11325672 73.80 35276 2807740 25518348 166.29 1768372 11894132 8900
01:34:01 AM 481108 1964516 11392628 74.24 36188 2852460 25575340 166.66 1768788 12005520 8156
01:36:02 AM 575956 2104280 11278172 73.49 37060 2870828 25451556 165.86 1765224 11925748 6528
01:38:01 AM 592504 2132416 11250200 73.31 37920 2883320 25420508 165.65 1765856 11906952 10244
01:40:02 AM 650592 2161648 11220872 73.12 38728 2853140 25391784 165.47 1767404 11829348 7116
01:42:01 AM 505244 2054924 11327404 73.82 39568 2890184 25489768 166.10 1769496 11973488 5244
01:44:01 AM 269004 1649652 11728592 76.43 40276 2777756 25912876 168.86 1789196 12240620 10048
01:46:01 AM 545732 1976104 11402492 74.30 41168 2773448 25611456 166.90 1790032 11927512 9020
01:48:01 AM 502328 1971804 11414128 74.38 42128 2802708 25572468 166.64 1791948 11933896 7968
01:50:01 AM 592580 2072784 11313816 73.73 42984 2812044 25547736 166.48 1851968 11806988 7592
01:52:01 AM 726844 2055608 11331048 73.84 42964 2662704 25517340 166.28 1858256 11686604 5724
01:54:02 AM 479576 1853456 11533300 75.16 44304 2705800 25702032 167.49 1864856 11921664 4128
01:56:01 AM 530980 1908940 11477652 74.79 45132 2709312 25661788 167.23 1866556 11874888 11164
01:58:02 AM 665816 2066052 11320484 73.77 46080 2731168 25466888 165.96 1867928 11721364 9576
02:00:02 AM 485116 2130736 11258396 73.37 47228 2972324 25466696 165.95 1871200 11905352 8340
02:02:02 AM 163004 1205004 12108720 78.91 3484 2575820 26376520 171.88 1608756 12590604 3384
02:04:02 AM 174036 1245096 12073000 78.67 3756 2601012 26328988 171.57 1628384 12551392 4000
02:06:03 AM 160036 1109920 12207420 79.55 8528 2476948 26474536 172.52 1632328 12561076 5852
02:08:01 AM 171196 1395400 11922832 77.70 5876 2752580 26147336 170.39 1619352 12560580 2588
02:10:03 AM 384704 1398544 11918892 77.67 5040 2544660 26209052 170.79 1620072 12312864 1932
02:12:03 AM 158564 1362544 11953328 77.89 3116 2738768 26209880 170.80 1625792 12548276 1528
02:14:01 AM 174840 1064188 12253740 79.85 2864 2422688 26530516 172.89 1595276 12563420 2124
02:16:03 AM 165512 1064804 12251400 79.84 3756 2433388 26504212 172.72 1607956 12558132 2992
02:18:02 AM 160564 1680704 11636956 75.83 4364 3051592 25862460 168.53 1664516 12511632 6492
02:20:02 AM 180260 1048808 12269228 79.95 5200 2400208 26568992 173.14 1615472 12537720 2088
02:22:03 AM 232324 1065548 12252256 79.84 2844 2366884 26476536 172.54 1627636 12462956 4204
02:24:03 AM 170280 1254088 12062000 78.60 3756 2618496 26329284 171.58 1598228 12559532 1712
02:26:01 AM 174760 1270892 12046092 78.50 3656 2629308 26281916 171.27 1600552 12531068 1668
02:28:03 AM 216524 1150316 12165936 79.28 6068 2464716 26418608 172.16 1623644 12469664 6712
02:30:03 AM 167808 1047196 12269556 79.95 9176 2407472 26505328 172.72 1631932 12528604 824
02:32:01 AM 157120 1056048 12261244 79.90 3572 2432008 26491868 172.64 1601660 12572752 484
02:34:02 AM 177936 1319512 11996212 78.17 3504 2676724 26218840 170.86 1591368 12558268 2212
02:36:02 AM 157956 1050420 12266740 79.94 3676 2426404 26479576 172.55 1592828 12578020 1040
02:38:01 AM 154748 1046572 12270288 79.96 3532 2425544 26517652 172.80 1625680 12550472 5000
02:40:03 AM 171892 916740 12400708 80.81 4352 2277656 26601924 173.35 1618356 12530040 1152
02:42:02 AM 181772 1068668 12248132 79.82 2540 2422580 26469824 172.49 1619400 12533552 1380
02:44:01 AM 186848 1014660 12302680 80.17 2356 2361476 26488488 172.61 1627648 12516768 416
如果 %idle 值比较小(接近 0%),通常意味着 CPU 负载较高,几乎没有空闲时间,可能的原因包括:
基础知识
sar -u
中 %idle
列比较小代表什么?
在 Linux 系统中,sar -u
命令用于查看 CPU 使用情况,其中 %idle
列表示 CPU 处于空闲状态的时间百分比。 如果 %idle
值比较小(接近 0%),通常意味着 CPU 负载较高,几乎没有空闲时间,可能的原因包括:
-
CPU 计算密集型任务:系统正在运行大量计算密集型进程,比如数据库查询、大规模计算、视频处理等。
-
I/O 负载导致 CPU 等待:如果
%iowait
(I/O 等待时间)也很高,说明 CPU 在等待磁盘或网络 I/O 完成,可能是磁盘 IOPS 不足或存储设备性能瓶颈。 -
高系统开销(%system 高):如果
%system
值较高(系统占用 CPU 多),可能是内核态进程占用了大量 CPU 资源,比如频繁的中断、网络流量过高等。 -
大量进程竞争 CPU 资源:如果
load average
(uptime
命令或sar -q
)也很高,说明系统中的进程数量过多,导致 CPU 资源紧张。 -
应用程序或内核异常:某些进程可能发生死循环,导致 CPU 持续高负载。
sar -q
中 runq-sz
明显增长代表什么?
sar -q
命令用于查看系统的运行队列(Run Queue)和负载情况,其中:
-
**runq-sz**
(运行队列大小):表示等待 CPU 运行的进程数量。 -
**plist-sz**
(进程列表大小):表示系统中当前的进程总数。 -
**ldavg-1**
、**ldavg-5**
、**ldavg-15**
:表示系统的 1 分钟、5 分钟和 15 分钟的平均负载。
1. 指标含义回顾
-
pgpgin/s 与 pgpgout/s 表示每秒从磁盘读取和写入的页面数。数据较高说明页面 I/O 活动激增(例如大量数据交换、缓存填充或换入换出)。
-
fault/s 表示每秒产生的页面错误数(缺页异常)。数值较高往往与大量内存分配、应用频繁访问数据或缓存失效有关。
-
majflt/s 表示每秒发生的主缺页(需要从磁盘加载页面)的次数。虽然数值整体较低,但偶尔的上升可能反映某些操作需要从磁盘取数据。
-
pgfree/s 表示每秒释放的页面数。释放页面增加意味着系统正大规模回收页面。
-
pgscank/s 是内核后台扫描(查找可回收页面)的速率。较高的值说明内核正在积极扫描内存以寻找可以回收的页面。
-
pgscand/s 表示实际回收的页面数。数值上升表明内核回收活动更为激烈。
-
pgsteal/s 指“窃取”页面(从缓存或可回收页面中快速分配)的速率。数据高说明系统迫切需要回收页面来满足内存分配请求。
-
%vmeff 是页面回收效率的指标(通常反映在扫描过程中实际成功回收的比例或效率)。这里大部分时间值在 190 左右,说明在激烈的扫描下,内核“窃取”和释放页面的动作效率较高,但也反映出内存回收任务繁重。
2. 数据分析
A. 时间段内的变化
-
01:22 – 01:42 AM 开始时各项指标处于中等水平(pgpgin 数值在 5000 左右,pgfree ~28k),而 pgscank、pgscand、pgsteal 有时为 0,有时突然出现小幅波动(例如 01:28 至 01:40 有轻微扫描与窃取行为,效率约 196~200)。这表明在这一段时间内内核偶有回收动作,但总体压力不算极端。
-
01:44 – 02:00 AM 部分时段(如 01:44、01:52)pgscank 和 pgsteal 开始有较大幅度上升,pgfree 稳定在 28~31k,说明系统开始主动扫描回收页面。但总体 I/O 水平仍保持在较低水平(pgpgin 仍在 5000 左右)。
-
02:02 AM 开始至 04:06 AM 出现明显的“跳变”:
-
pgpgin/s 突然飙升至 18-26 万,pgfree/s 增加到 70~84k,pgscank/s 大幅上升(从几十或几百到数万甚至超过 50k),同时 pgsteal/s 达到 9-12 万的水平。
-
fault/s 也相对维持在 25k~30k,显示页面错误频发。
-
%vmeff 保持在 190 左右。 这一阶段表明内核正处于极度活跃的页面回收状态,说明系统内存压力剧增,内核必须大规模扫描、释放和“窃取”页面来满足内存分配需求。
-
-
04:06 – 07:00 AM 整体指标仍保持在高水平(pgpgin 持续在 220k~250k左右,pgfree/s 在 80k+,pgscank/s 和 pgsteal/s 依然维持在较高数值),说明内存回收负载依旧很重。
-
07:04 AM 以后 数据突然出现大幅下降(例如 07:06 AM pgpgin 降到 5千左右,pgfree/s 则降到 28k~29k,此后指标恢复到较低水平)。这一变化可能说明内存压力缓解,或系统负载变化导致回收活动降低。
B. 整体判断
-
内存压力极大 从 02:02 AM 到 07:00 AM,内核大量扫描并释放页面(pgscank、pgscand、pgsteal 高达数万甚至十万级),说明系统长期处于内存紧张状态。
-
大量 I/O 操作 pgpgin/s、pgpgout/s 的大幅波动表明大量页面从磁盘读入/写出,可能与频繁换入/换出或缓存刷新有关。
-
回收效率较高但代价昂贵 虽然 %vmeff 数值看上去较高(约 190), 说明扫描中能回收较多页面,但如此高频的回收活动本身会带来系统开销和 I/O 压力。
3. 原因分析
内存不足导致触发 kswapd, 从而导致缓存频繁回收, 回收过程中内存持续紧张,导致持续缓存回收
2025-3-8 号更新定位进展:
后续观察, 发现修改内核参数之后 , 凌晨2 点负载还是很高,
可以看到 2 点负载的确突然升高
sar -u -e "04:00:00"01:38:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
01:40:01 AM 1 6117 11.59 9.87 11.31 0
01:42:02 AM 0 6112 10.27 10.34 11.33 0
01:44:01 AM 14 6108 6.87 9.04 10.73 0
01:46:02 AM 2 6108 7.02 8.61 10.38 0
01:48:01 AM 3 6105 10.05 8.92 10.26 0
01:50:01 AM 34 6121 6.89 8.04 9.76 0
01:52:01 AM 1 6115 8.21 7.62 9.37 1
01:54:02 AM 2 6108 7.65 7.31 9.02 0
01:56:01 AM 20 6112 7.65 7.46 8.87 0
01:58:02 AM 2 6088 8.81 7.88 8.85 0
02:00:02 AM 19 6113 11.28 8.84 9.07 2
02:02:01 AM 30 6132 40.91 20.20 13.15 0
02:04:02 AM 14 6137 49.54 28.89 17.12 2
02:06:02 AM 79 6140 59.82 40.00 22.65 0
02:08:02 AM 54 6131 45.02 41.45 25.34 0
02:10:03 AM 50 6140 42.49 40.54 26.96 0
02:12:02 AM 36 6124 34.90 38.30 27.72 0
02:14:01 AM 46 6149 42.28 39.71 29.51 0
02:16:02 AM 25 6134 35.58 38.20 30.20 0
02:18:02 AM 54 6142 39.30 38.86 31.43 0
查看 osw 中 mpstat 信息
路径 /var/log/oswbb/archive/oswmpstat/
可以看到是 CPU 占用偏高, 但等待 IO 的 CPU 并没升高
查看 IOSTAT
发现 IO 也升高了 也就是说凌晨 2:00 之后, CPU 与 IO 消耗都明显升高了, 究竟是谁?
查看 pidstat
路径 /var/log/oswbb/archive/oswpidstat/ 发现 2:00 有一个进程比较异常
查看 3846364 进程是谁
[root@localhost oswpidstat]# grep -nw 3846364 /var/log/pg_log/*log
/var/log/pg_log/postgresql-4.log:1374:2025-03-06 23:00:01.676 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(34462) is 2045746:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669.
/var/log/pg_log/postgresql-4.log:1379:2025-03-06 23:00:02.103 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(40866) is 1931080:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669.
/var/log/pg_log/postgresql-4.log:1479:2025-03-06 23:00:02.499 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(40370) is 1687669:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197.
/var/log/pg_log/postgresql-4.log:1579:2025-03-06 23:00:03.385 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(35890) is 2218197:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:1679:2025-03-06 23:00:04.275 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(54842) is 2397606:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:1779:2025-03-06 23:00:10.596 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(34462) is 2045746:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:1784:2025-03-06 23:00:13.201 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(54842) is 2397606:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:1884:2025-03-06 23:30:57.820 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(54842) is 2397606:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:1984:2025-03-06 23:35:33.088 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(40866) is 1931080:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:2084:2025-03-06 23:38:38.571 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(35890) is 2218197:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:2184:2025-03-06 23:41:33.078 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(40370) is 1687669:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-4.log:2284:2025-03-06 23:45:01.879 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(34462) is 2045746:DETAIL: Process holding the lock: 3846364. Wait queue: 2045746, 1931080, 1687669, 2218197, 2397606.
/var/log/pg_log/postgresql-5.log:35:2025-03-07 01:13:42.217 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(47832) is 3846364:LOG: duration: 26016769.129 ms execute <unnamed>: SELECT func_clean_tbl_xxx($1, $2)
/var/log/pg_log/postgresql-5.log:36:2025-03-07 01:13:42.217 UTC PostgreSQL JDBC Driver postgres 127.0.0.1(47832) is 3846364:DETAIL: parameters: $1 = '20000000', $2 = '100000'
[root@localhost oswpidstat]# 该进程对应的是 is 库中 func_clean_tbl_xxx 函数
返回来查看 03.06 02:00 左右, 发现也有一个异常的进程, 如下
查看该进程信息
可以看到 两次都是 is 库中的 func_clean_tbl_xxx 这个导致的, 其详细信息如下
CREATE OR REPLACE FUNCTION public.func_clean_tbl_xxx(threshold integer, batch_size integer)RETURNS TABLE(upload_pic_urls text)LANGUAGE plpgsql
AS $function$
DECLARErecord_cnt INT;sql_cmd varchar;deleted_record RECORD;
BEGIN-- 获取当前记录总数EXECUTE 'SELECT COUNT(*) FROM tbl_xxx' INTO record_cnt;-- 如果表中记录数小于等于阈值,则无需执行任何操作IF record_cnt <= threshold THENRETURN; -- 提前退出函数END IF;-- 确保批量大小不超过记录总数IF batch_size > record_cnt THENbatch_size := record_cnt;END IF;WHILE record_cnt > threshold LOOP-- 计算本次循环实际要删除的记录数IF (record_cnt - batch_size) < threshold THENbatch_size := (record_cnt - threshold);END IF;-- 构建并执行删除命令sql_cmd = FORMAT('delete from tbl_xxx where id in (select id from tbl_xxx order by alarm_time limit %1$s) returning upload_pic_urls', batch_size);FOR deleted_record IN EXECUTE sql_cmd LOOP-- 如果upload_pic_urls非空且不为空字符串,则返回该值IF deleted_record.upload_pic_urls IS NOT NULL AND deleted_record.upload_pic_urls <> '' THENupload_pic_urls := deleted_record.upload_pic_urls;RETURN NEXT;END IF;END LOOP;-- 更新剩余记录数EXECUTE 'SELECT COUNT(*) FROM tbl_xxx' INTO record_cnt;END LOOP;RETURN;
END;
$function$
对于大表清理数据, 尽量不要使用 delete, 建议先分表,然后通过 drop 子表的方式清理历史数据
优化建议
# 目前策略确认
0. 每天凌晨 2:00 开始执行 func_clean_tbl_xxx
1. drop 180 天之前的子表 (当前是否已经在业务层实现了?)
2. 达到 2000w 条再开始 delete 清理, 每次 delete 10w 条, 并返回其中 upload_pic_urls 非空的 url# 建议改为 (待与业务开发确认)
1. drop 180 天之前的子表
2. 达到 300w 条计划 drop 子表, 将待 drop 子表中的 upload_pic_urls 插入到单独的表中 tbl_xxx, 然后 drop 子表
3. 业务层, 则定期在 4:30 开始查询 tbl_xxx 表, 只要其中 not null and 不等于'' 的记录, 查询完成之后, 则 truncate 该表# 反思
如果提前定期巡检下, 应该可以提前发现该问题(巡检,监控都重要性)