確保有效的 Amazon MQ 效能 - Amazon MQ

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

確保有效的 Amazon MQ 效能

以下設計模式可以提升 Amazon MQ 代理程式的效益和效能。

對於具有緩慢消費者的佇列,停用並行存放和分派

根據預設,Amazon MQ 會針對具有快速消費者的佇列而最佳化:

  • 如果消費者能夠跟得上生產者產生訊息的速率,則會將其視為快速消費者。

  • 如果佇列建置未認可訊息的後端記錄,這可能造成生產者傳輸量降低,則消費者會被視為緩慢

若要指示 Amazon MQ 針對具有緩慢消費者的佇列來最佳化,請將 concurrentStoreAndDispatchQueues 屬性設定為 false 。如需範例組態,請參閱 concurrentStoreAndDispatchQueues

為最佳傳輸量選擇正確的代理程式執行個體類型

代理程式執行個體類型的訊息傳輸量取決於應用程式的使用案例和以下因素:

  • 在持久性模式中使用 ActiveMQ

  • 訊息大小

  • 生產者和消費者的數目

  • 目的地的數目

了解訊息大小、延遲和輸送量之間的關係

根據您的使用案例,較大的代理程式執行個體類型可能不一定提高系統傳輸量。當 ActiveMQ 將訊息寫入到耐久性儲存時,訊息的大小決定系統的限制因素:

  • 如果您的訊息小於 100 KB,則持久性儲存延遲是限制因素。

  • 如果您的訊息大於 100 KB,則持久性儲存傳輸量是限制因素。

當您在持久性模式下使用 ActiveMQ 時,若有少數消費者或消費者是緩慢的,則通常會寫入至儲存。在非持久性模式下,如果代理程式執行個體的堆積記憶體已滿,則也會使用緩慢消費者寫入至儲存。

若要判斷您應用程式的最佳代理程式執行個體類型,我們建議測試不同的代理程式執行個體類型。如需詳細資訊,請參閱 Broker instance types,亦可參閱使用 JMS 基準量測 Amazon MQ 的輸送量

大型代理程式執行個體類型的使用案例

當大型代理程式執行個體類型提高輸送量時,有三種常見的使用案例:

  • 非持久性模式 – 當您的應用程式對在代理程式執行個體容錯移轉期間失去訊息不太敏感時 (例如,當播放運動比分時),您通常可以使用 ActiveMQ 的非持久性模式。在此模式下,僅在代理程式執行個體的堆積記憶體已滿時,ActiveMQ 才會將訊息寫入至持久性儲存。使用非持久性模式的系統可受益於大型代理程式執行個體類型上提供的更高記憶體數量、更快 CPU,以及更快網路。

  • 快速消費者 – 當作用中消費者可用,且 concurrentStoreAndDispatchQueues 旗標已啟用時,ActiveMQ 可讓訊息直接從生產者移到消費者,無需將訊息傳送到儲存 (甚至在持久性模式下)。如果您的應用程式可以快速耗用訊息 (或如果您可以設計讓消費者這樣做),則您的應用程式可受益於大型代理程式執行個體類型。若要讓您的應用程式更快耗用訊息,請將消費者執行緒新增到您的應用程式執行個體,或垂直或水平擴增您的應用程式執行個體。

  • 批次交易 – 當您使用持久性模式,並且為每個交易傳送多則訊息時,您可以使用大型代理程式執行個體類型來達到更高的整體訊息輸送量。如需詳細資訊,請參閱 Apache ActiveMQ 文件中的我是否應使用交易

為最佳輸送量選擇正確的代理程式儲存類型

若要利用跨多個可用區域的高耐久性和複寫功能,請使用 Amazon EFS。若要利用低延遲和高輸送量,請使用 Amazon EBS。如需更多詳細資訊,請參閱 Storage

正確地設定您的代理程式網路

當您建立代理程式網路時,請為您的應用程式正確地設定此項目: