如何在單一代理程式中配置數十萬個佇列?

常見問題 > 組態設定 > 如何在單一代理程式中配置數十萬個佇列?

在單一代理程式中擴展到數萬個佇列相對簡單,但需要對預設配置進行一些變更。

減少執行緒

在預設配置下,ActiveMQ Classic 被配置為每個佇列使用一個分派執行緒 - 您可以使用在目的地策略條目上設定 optimizedDispatch 屬性 - 請參閱配置佇列

ActiveMQ Classic 可以選擇性地在內部使用執行緒池來控制訊息的分派 - 但由於許多部署作業系統都擅長處理大量執行緒,因此預設為關閉。若要啟用此選項,請在啟動腳本 INSTALL_DIR/bin/activemq 中設定 ACTIVEMQ_OPTS 以停用專用的任務執行器 - 例如:

ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"  

或者您可以在 /etc/activemq.conf 中設定 ACTIVEMQ_OPTS

注意:從 ActiveMQ Classic 5.6 版本開始,專用的任務執行器預設為停用(請參閱 jira 問題 AMQ-3667)。

若要減少傳輸使用的執行緒數量 - 請考慮使用 NIO 傳輸 - 請參閱配置傳輸

以下是在提供的範例代理程式組態檔案中使用的範例

減少記憶體消耗

減少每個執行緒使用的記憶體 - 請參閱減少記憶體消耗

減少檔案描述符數量

ActiveMQ Classic 預設使用 amqPersistenceAdapter 來持久化訊息。不幸的是,此持久化適配器(以及 kahaPersistenceAdapter)會為每個佇列開啟一個檔案描述符。當建立大量佇列時,您很快就會達到作業系統的限制。

您可以選擇其他持久化選項,或者 - 試用 5.3 及更高版本中的新 KahaDB

提高每個處理程序的檔案描述符限制

嘗試在 Google 上搜尋您正在使用的作業系統

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。 版權所有 © 2024,Apache 軟體基金會。 依據 Apache 授權 2.0 授權。