版本 5 效能調校

使用 ActiveMQ Classic 5 > 版本 5 效能調校

如需更完整的概述,請參閱效能

效能和可靠性之間存在權衡。
預設情況下,activemq 在兩者之間取得平衡,因此您可以變更一些設定來提高吞吐量。

非同步發佈

首先是一些背景知識

當 ActiveMQ Classic 訊息生產者傳送非持久性訊息時,它會以非同步方式分派(發射後不管) - 但對於持久性訊息,發佈者會封鎖,直到它收到訊息已由代理程式處理的通知(儲存到儲存區 - 排隊分派給任何活動的消費者等)。訊息預設會以設定為持久性的傳遞模式分派(JMS 規範要求)。因此,如果您在主題上傳送訊息,則發佈者預設會封鎖(即使主題上沒有持久訂閱者),直到代理程式傳回通知。

因此,如果您想要獲得良好的主題訊息效能,請將發佈者的傳遞模式設定為非持久性,或將 ActiveMQ Classic ConnectionFactory 上的 useAsyncSend 屬性設定為 true

消費者的預先提取大小

ActiveMQ Classic 會盡可能快地將盡可能多的訊息推送給消費者,這些訊息將在 ActiveMQ Classic 工作階段中排隊等待處理。ActiveMQ Classic 在消費者處理訊息之前會推送給消費者的最大訊息數由預先提取大小設定。您可以透過使用較大的預先提取大小執行 ActiveMQ Classic 來提高吞吐量。預先提取大小由 ActiveMQPrefetchPolicy bean 決定,該 bean 設定在 ActiveMQ Classic ConnectionFactory 上。

預設值

消費者類型 預設值
佇列 1000
佇列瀏覽器 500
主題 32766
持久主題 1000

最佳化確認

當以自動確認模式(在建立消費者工作階段時設定)使用訊息時,ActiveMQ Classic 會成批確認訊息接收給代理程式(以提高效能)。批次大小是消費者預先提取限制的 50%。您可以透過將 ActiveMQ Classic ConnectionFactory 上的 optimizeAcknowledge 屬性設定為 false 來關閉批次確認

直通工作階段消費

預設情況下,消費者的工作階段會在單獨的執行緒中將訊息分派給消費者。如果您使用自動確認的消費者,您可以透過將訊息直接傳遞給工作階段給消費者來提高吞吐量,方法是將 ActiveMQ Classic ConnectionFactory 上的 alwaysSessionAsync 屬性設定為 false

基於檔案的持久性

預設的持久性儲存區是AMQ 訊息儲存區

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