更新时间:2025-04-10 GMT+08:00
RDS for PostgreSQL实例inodes过多导致数据库重启缓慢
实例inodes指标值过大,常见的原因是临时文件堆积、表对象过多。这两种情况下发生异常重启时,均会拖慢启动进程。
场景一
场景二
- 场景描述
使用RDS for PostgreSQL数据库时,业务创建了大量的表。某一时间连接数与业务量激增,数据库进程内存耗尽发生OOM,从而导致数据库重启,但重启过程非常缓慢,导致业务较长时间不可用。
- 原因分析
由于数据库发生了OOM进而导致进程重启,在启动时会进入故障恢复模式,这时内核进程会遍历所有表并做fsync(将os缓存内容刷新至磁盘),如果业务创建的表对象过多,在启动时便会消耗大量时间进行遍历,从而导致数据库启动缓慢,影响业务可用性。
- 解决方案
- 建议业务侧限制创建表的数量,单实例表数量最好不超过2万,单库表数量最好不超过4千,详见实例使用规范。
- 建议业务侧配置内存监控,必要时扩充内存规格,尽量避免OOM发生。同时关注inode数监控指标,控制创建的对象数量。

