首页 > 解决方案 > Postgres 累积磁盘 I/O

问题描述

我遇到了 postgres 阻塞我的 SSD (256MB) 的问题,因为它会随着时间的推移而累积。

我的应用程序有一个表,caseA - caseB其中包含我事先创建的对。fetchall()使用并行工作人员,每个具有自己连接的工作人员运行一个选择查询 -根据caseA-caseB pair其接收到的主键(大约需要 5 秒)连接其他几个表。

然后它对数据进行一些分析并对copy_from其他两个表进行分析。想法是,磁盘使用率随着时间的推移而升高,积压达到峰值,400s最终会使我的系统停止。

我不明白为什么会发生这种情况以及如何预防?我们正在谈论总共 6500 万个案例对。一个结果表将具有相同数量的行,但另一个将有更多 - 数亿条记录。

我尝试过Semaphor控制有多少工作人员可以下载/上传、增加work_memshared_buffers。但这似乎只是推迟了问题。

经过几次运行后,我为所有工作人员实施了睡眠时间,但这似乎没有帮助,这就是为什么我认为问题必须在 postgres 中的某个地方。

非常感谢您的帮助。

标签: pythonpostgresqlpython-3.6

解决方案


推荐阅读