近一周發現RabbitMQ有性能問題,即內存占用太高,導致超過了原本的安全線
最后,會導致外面的消息進不來,從而導致系統不可用
參考文章《RabbitMQ內存消耗》知道其中消耗的資源包含,特別是其中RabbitMQ的連接和Channel都會導致資源占用過高
然后再對照我系統中的情況進行分析,發現確實是連接和Channel占用了太多的資源,而且Connection和Channel的數量在持續上升中(每次轉發一條消息都需要創建Connection和Channel)
最后定位到,我在某個發送消息后,並沒有關閉連接和Channel,導致資源消耗
修改代碼為,請注意,這里需要先關閉Channel,再關閉Connection,不然會引起Channel的錯誤。
調整完代碼后並運行一個晚上后,RabbitMQ服務器占用的內存已經維持在一個很低的數值,說明該功能已經起到效果