PostgreSQL 17.2迁移后出现invalid DSA内存分配错误求助
PostgreSQL 17.2 左外连接查询内存分配错误问题
迁移至PostgreSQL 17.2两周后,我们发现一条在PostgreSQL 14上稳定运行多年的查询开始报错。我们使用64GB内存的PostgreSQL RDS实例,在数据流中对千万级表执行两次基于索引列的左外连接,查询语句如下:
SELECT * FROM company LEFT OUTER JOIN company_s ON company.domain = company_s.domain LEFT OUTER JOIN socials ON company_s.raw_domain = socials.domain
该查询正常情况下4分钟内返回,但目前运行5-11分钟后抛出错误:
invalid DSA memory alloc request size 1811939328
奇怪的是,相同数据下前两周运行正常,现 staging 和生产环境均出现实例内存耗尽(通常剩余10GB+)的情况:staging环境11分钟后失败,偶发SSL SYSCALL Error: EOF detected.;生产环境5分钟后失败,仅出现上述内存分配错误。
我们已尝试以下操作但未解决问题:
- 清理超大条目
- 重建所有索引
- 对涉及表执行
analyze - 缩小至100万条数据样本可运行,但非可行方案
- 将shared_buffers调整至32GB
目前发现PG 17相关的同错误Bug报告,但无解决方案,相关问题也未找到适用答案。
内容的提问来源于stack exchange,提问作者NicolasZ
相关产品推荐
相关产品推荐

