服务器环境:Centos7.9,PGSQL14
- 故障现象
平均负载飙升至80以上
磁盘 IO 高: 故障期间磁盘 IO 明显增加
同步异常: 主从库的复制出现问题,从库自动提升为主库
- 排查过程
磁盘 IO:使用 iostat查看磁盘 IO 活动,发现磁盘读写频繁
内存使用情况:通过报警发现内存压力较大
dmesg:发现反复出现 PostgreSQL 进程被内存不足(OOM)杀掉的日志检查
PostgreSQL 慢查询日志,查看活动锁,并未发现明显异常的查询或锁 - 原因分析
从 dmesg 日志中看到pgsql进程被kill的信息PostgreSQL 进程因为系统内存不足被杀掉,导致同步延迟和负载飙升
高 IO 很可能是由于进程被系统kill之后事务回滚 或 PostgreSQL 进程在崩溃后尝试恢复所导致的
- 解决方案
在pgsql配置参数已调整的情况下,最有效的方案是扩大机器内存。
如果pgsql使用默认参数,可以按机器情况调整shared_buffers 、work_mem、maintenance_work_mem
等内存相关参数