這個警告訊息是因為你的系統的 ulimit -n
(開啟檔案的數量限制)設定為 1024,但 VerneMQ 建議的最小值是 65536。當有數千個客戶端連接時,VerneMQ 可能會消耗大量的開啟檔案控制代碼,因為每個連接至少需要一個檔案控制代碼¹。
你可以使用 ulimit -n 65536
命令來改變開啟檔案的數量限制,但這只會改變當前 shell session 的限制¹。
如果你想要在系統範圍內永久地改變這個限制,你需要編輯 /etc/security/limits.conf
檔案,並需要超級使用者的權限。如果你是從二進位套件安裝 VerneMQ,你可以為 vernemq
使用者添加以下行,並替換你想要的硬限制和軟限制:
vernemq soft nofile 4096
vernemq hard nofile 65536
在 Ubuntu 上,如果你總是依賴 init scripts 來啟動 VerneMQ,你可以建立 /etc/default/vernemq
檔案並指定一個手動限制,像這樣:ulimit -n 65536
。這個檔案會自動從 init script 中取得,並且由它啟動的 VerneMQ process 會適當地繼承這個設定。由於 init scripts 總是以 root 使用者執行,所以如果你只依賴 init scripts,就不需要在 /etc/security/limits.conf
中特別設定限制¹。
請參考 VerneMQ 的官方文件 以獲得更多資訊。¹
來源: 與 Bing 的交談, 2023/12/6
(1) Change Open File Limits - VerneMQ. https://docs.vernemq.com/guides/change-open-file-limits.
(2) Change Open File Limits - VerneMQ. https://docs.vernemq.com/guides/change-open-file-limits.
(3) Unable to setup cluster · Issue #452 · vernemq/vernemq · GitHub. https://github.com/vernemq/vernemq/issues/452.
(4) Open file limit problem · Issue #616 · vernemq/vernemq · GitHub. https://github.com/vernemq/vernemq/issues/616.
(5) undefined. https://access.redhat.com/solutions/1479623.