gpt4 book ai didi

postgresql - GNU 并行子进程(Postgres vacuum)意外终止

转载 作者:行者123 更新时间:2023-11-29 13:41:46 26 4
gpt4 key购买 nike

我像这样运行 parallel,抽象出一些细节:

generate_job_list | parallel -j10 -q bash -c 'echo -n "running {}" ; dostuff {}'

我注意到有时 parallel 产生的子进程在收到 SIGKILL 后死掉(我知道是因为 dostuff 是一个 psql 命令来运行 vacuum,Postgres 日志告诉我命令收到了 SIGKILL)。我没有设置超时,所以我不清楚什么可能会做这样的事情。这发生在子进程运行数小时后。

parallel 是否有默认超时(文档似乎没有暗示它有)或关于可能导致此问题的任何其他想法?

ETA:在问题正文中添加一些帮助我找到这个问题的内容,因为它可能会帮助遇到同样问题的其他人找到这个问题。

在您的 Postgres 日志中,您应该会找到一些这样的消息:

LOG:  received smart shutdown request
LOG: autovacuum launcher shutting down
FATAL: the database system is shutting down

尽管您没有要求 Postgres 关闭,但它仍会生成。

最佳答案

所以正如评论中提到的,问题是 OOM killer 。我通过做几件事来修复它:

  • 分区表太大而无法在不遇到内存问题的情况下清理
  • 将内存过量使用模式更改为 2,并将过量使用率设置为 95
  • 将 autovacuum 更改为更积极,这样我就不必运行那么多手动维护任务,这更好,因为如果 autovacuum 失败,它不会在常规事务中运行,因此如果它失败,它不会强制进行长时间恢复

关于postgresql - GNU 并行子进程(Postgres vacuum)意外终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54354994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com