RDS에서 Discourse가 주기적으로 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을 10분으로 줄여보았지만(초기 설정은 1일) 차이가 없었습니다. 다른 분들도 비슷한 문제를 겪어 보셨나요? 그렇다면 어떻게 처리하셨는지 알려주시면 감사하겠습니다.

사용 중인 버전은 Discourse 2.7.0이며, Postgres 버전은 13.8입니다. 앱과 DB는 도커가 아닌 개별 호스팅(ec2, rds) 환경에서 실행되고 있습니다.

질문하신 구체적인 문제에 대해서는 도움을 드리기 어렵지만, 왜 이렇게 오래된 Discourse 버전을 사용하고 계신지 궁금합니다. 업그레이드를 미룰수록 업그레이드 시 문제가 발생할 가능성이 높아집니다. 이상적으로는 항상 최신 버전을 사용해야 합니다. 또한 업데이트에는 간혹 보안 수정 사항이 포함되기도 합니다.

저는 ECS에서 RDS와 함께 사이트를 관리하고 있으며, 최신 버전을 사용 중이라 아직까지는 문제가 없었습니다. 하지만 여러분의 환경에 대한 더 자세한 정보가 없으면 어떤 문제가 원인인지 추측하기 어렵습니다.

일반적으로 매우 오래된 버전을 사용하다가 문제가 발생하면, 첫 번째 해결책은 업그레이드입니다.

그렇게 말씀해 주시니 감사합니다. 피드백 주셔서 감사합니다.