Heroku Postgres持续提示临时空间不足却无法定位原因求助
Heroku Postgres临时磁盘空间不足排查方向
配置与系统限制排查
- 检查临时文件大小限制:运行
SHOW temp_file_limit;,确认该值是否过低,导致小体积临时文件也触发警告。 - 查看磁盘分区空间:在Heroku控制台查看数据库所在磁盘的总空间与已用空间,确认是否是临时目录所在分区本身空间不足。
后台任务与维护操作排查
- 检查自动维护进程:运行
SELECT pid, query FROM pg_stat_activity WHERE query LIKE '%vacuum%' OR query LIKE '%reindex%';,排查是否有后台vacuum、索引重建等操作占用临时空间,这类操作通常不会被pg_stat_statements记录为用户查询。
事务与连接状态分析
- 排查长事务:运行
SELECT pid, now() - xact_start AS duration, query FROM pg_stat_activity WHERE xact_start IS NOT NULL AND state != 'idle';,长时间未关闭的事务可能导致临时文件无法及时清理。
查询并发与work_mem影响
- 统计排序/哈希查询数量:运行
SELECT count(*) FROM pg_stat_activity WHERE query LIKE '%sort%' OR query LIKE '%hash%';,即使单条查询work_mem设置合理,大量并发的排序、哈希操作也会累计占用大量临时空间。
扩展与插件检查
- 排查第三方扩展:如果使用了PostGIS、pgcrypto等扩展,检查是否有扩展相关的后台操作生成临时文件,可查看扩展的运行日志或状态视图。
内容的提问来源于stack exchange,提问作者Sarah B
相关产品推荐
相关产品推荐

