2015-07-13 81 views
1

無論何時我們使用從#(通配符)到多個主題的訂閱,使用多少內存?例如,如果我們已經超過10M主題,可以使用訂閱到所有這些,或它導致內存泄漏?MQTT訂閱的內存使用

回答

2

此問題嚴格與MQTT代理和客戶端實現有關。 當然,MQTT標準規範並未提供有關此類實現的特性的任何信息。

Paolo。

1

擴展到ppatierno的答案。

對於大多數設計良好的經紀人來說,數量或範圍(用於通配符)訂閱不應該真正改變正常情況下使用的內存量。最多的存儲應該等同於客戶訂閱的主題字符串,這將與傳入的消息相匹配,以查看是否應該交付。

這可能不適用於持久訂閱(其中清除會話值未設置爲true)。在這種情況下,如果客戶端斷開連接,則消息可能會排隊等待重新連接。這裏消耗的內存量將是消息數量及其大小(以及代理可能具有的丟棄策略)的函數,而不是直接作爲訂閱主題數量的函數。

要回答問題的第二部分,使用通配符訂閱10,000,000個主題不太可能導致內存泄漏,但根據這些主題發佈消息的頻率,它可能會非常好地淹沒客戶端。