Wir stellen periodisch fest, dass das Erstellen eines GIN-Indexes auf post_search_data zu zahlreichen Lock:relations in der Leistungsübersicht führt. Das Beenden der Sitzung, die diesen Index erstellt, gibt alle blockierten Sitzungen frei. Interessant ist, dass der Index concurrently verwendet, was keine blockierende Operation sein sollte. Ebenso interessant ist, warum er mit temp präfixiert wird.
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
Ich habe auch versucht, idle_in_transaction_session_timeout auf 10 Minuten zu reduzieren (ursprünglich auf 1 Tag eingestellt), aber das hat keinen Unterschied gemacht. Hat jemand anderes ein solches Problem gehabt? Wenn ja, wie haben Sie es gelöst?
Unsere Version ist Discourse 2.7.0 und die Postgres-Version ist 13.8. App und DB sind nicht in Docker, sondern einzeln gehostet (EC2, RDS).