簡體   English   中英

調試 Postgres 'NOIFY 隊列中有太多通知'

[英]Debug Postgres 'too many notifications in the NOTIFY queue'

我正在使用一個每秒更新 2000-3000 次的 Postgres 表。 我正在使用 pg-promise 庫的更新助手生成的更新此表查詢。

每次更新都會使用 pg_notify() function 觸發通知。 一些 nodejs 腳本正在處理這些通知。 由於某種原因,在 Postgres 日志中不斷出現“通知隊列中的通知太多”消息,並且還指示通知隊列大小不斷增加至 100%。 我讀了一些帖子,例如: https://postgrespro.com/list/thread-id/1557124https://github.com/hasura/graphql-engine/issues/6263但我找不到調試此問題的方法。 哪種方法是處理這種情況的好方法?

您的聽眾似乎沒有足夠快地使用通知,或者可能根本沒有。 因此,第一步是記錄應用程序代碼中每個通知的處理過程,以了解實際發生的情況。

這可能是因為有一個長時間運行的事務阻止從緩沖區釋放較舊的消息。 該過程在手冊中進行了解釋,有點類似於清理 - 舊事務需要完成才能清理舊數據。

這里的一個問題是任何長時間運行的查詢都可以阻止清理。 對我來說,這是運行 Listen 的進程——它被設計為永遠運行。 PG 服務器日志有一個可能是罪魁禍首的后端 PID,因此您可以在 pg_stat_activity 中查找它並從那里繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM