Postgresql 版本升级后,Slow Sidekiq + Postmaster 使用 95%+ CPU(32 核)

好的,跟进一下:一切看起来仍然正常,postmaster 的负载已大幅下降,sidekiq 的运行速度也再次变得非常快。

总结一下在我的场景中(默认数据库名为 ‘discourse’)有效的方法:

cd /var/discourse/
./launcher enter app
sudo -u postgres psql
\c discourse

然后在 postgres 控制台中依次执行以下命令。每条命令的执行时间取决于数据库大小,前两条命令还会导致 CPU 重度使用:

VACUUM FULL VERBOSE;

REINDEX DATABASE discourse;

VACUUM VERBOSE ANALYZE;

注意:直到按照 @Falco 的建议执行了 VACUUM VERBOSE ANALYZE; 之后,我才察觉到明显变化,因此前两条命令可能并非必要。不过,在上一版本的 PostgreSQL 中,前两条命令似乎是解决该问题的关键 在此处

如果在执行 REINDEX DATABASE discourse; 时遇到类似 ‘ERROR: deadlock detected’ 的错误,只需重试直到成功即可。我上次(在上一版本的 PostgreSQL 中)也遇到了这种情况。

有一些建议是执行并发重索引(concurrent reindex),而不是上述的重索引操作:PostgreSQL 12 update

但请注意,上面的 @eboehnisch 在执行并发重索引时遇到了错误,详见此处

8 个赞