我正在使用RabbitMQ處理應用程序日誌(Windows Server 2008安裝)。應用程序向交易所發送消息。我有一個專用的隊列,可以將消息轉發給它。然後我有一個連接到該隊列的窗口服務,關閉消息,並將它們保存到數據庫。我有n個客戶端實時連接到交換機,以鎖定流,因此一次有n個連接。這些客戶端中的一些可能不能在代碼中關閉()他們的連接。許多客戶有很長時間的連接。RabbitMQ內存使用情況正在蔓延並阻止呼叫...爲什麼?
當消息從隊列中拉出時,它們被自動確認,所以我在隊列中沒有任何未確認的消息。但是,我看到兔子的記憶會隨着時間而增長。首次打開時,它從32K左右開始,然後逐漸增加,直到超過閾值並阻止傳入連接。
我有.NET和Java客戶端 - 但都是自動確認。
閱讀文檔,我沒有看到兔子如何使用記憶的任何描述 - 我不明白爲什麼隨着時間的推移記憶會變得越來越膨脹。這些消息越來越被拖垮,在我看來,這意味着Rabbit不會再堅持使用它,從而釋放相關的內存,從而導致穩定的mem使用情況。
我不明白如何擺弄Rabbit中的內存撥號將有助於 - 使用只是隨着時間的推移向上爬行:最終我會超過它。
我的猜測是我的客戶在做錯事情導致內存隨着時間的推移而增長,但我想不出爲什麼會這樣。
why does Rabbit memory usage creep up when no messages are kept on any queues?
what coding practices could cause the RabbitMQ server to
retain (and grow) memory?
@ metaforge:謝謝你的建議。不,這沒有發生。 –