RDS上创建GIN索引的会话周期性出现大量Lock:relation等待

我们偶尔会发现,在 post_search_data 上创建 GIN 索引会导致性能洞察中出现大量的 Lock:relations。终止创建此索引的会话可以释放所有被阻塞的会话。有趣的是,该索引使用了“concurrently”,这本不应该是一个阻塞操作。另外,它为什么会加上“temp”前缀也很有趣。

CREATE INDEX CONCURRENTLY temp_idx_recent_regular_post_search_data  ON post_search_data USING GIN(search_data) WHERE NOT private_message AND post_id >= 12431619

我也尝试将 idle_in_transaction_session_timeout 从最初设置的 1 天减少到 10 分钟,但没有起到任何作用。其他人遇到过类似的问题吗?如果有,你们是如何处理的?

我们的版本是 Discourse 2.7.0 和 Postgres 13.8。应用程序和数据库不在 Docker 中,而是单独托管(ec2、rds)。

我无法帮助您解决您提出的具体问题,但您为什么还在使用如此旧的 Discourse 版本?您等待的时间越长,在升级时遇到问题的可能性就越大。理想情况下,您应该始终使用最新版本。此外,更新有时会包含安全修复程序。

1 个赞

我正在使用 rds 管理一个 ecs 站点,并且没有发现任何问题,但它是一个最新版本。没有您设置的更多详细信息,很难猜测问题可能是什么。

通常,当某人遇到非常旧版本的问题时,第一个答案是升级。

2 个赞

说得有理。感谢您的反馈。

1 个赞