Sun Java System Message Queue 3.7 UR1 管理指南

代理程式調校

以下各小節描述您可如何調整代理程式特性以改善效能。

記憶體管理:在代理程式負載過重時提高穩定性

您可以對每個目標個別配置記憶體管理,或是集中配置整個系統層級 (針對所有目標) 的記憶體管理。

使用實體目標限制

如需有關實體目標限制的資訊,請參閱第 6 章, 管理實體目標

使用系統範圍限制

如果訊息產生器經常使訊息用戶超載,代理程式中可能會累積訊息。代理程式包含一個在記憶體不足情況下,降低產生器速度和將訊息移出使用中記憶體的機制,所以對代理程式可保留的訊息總數目 (和訊息容量) 做出硬式限制是明智之舉。

設定 imq.system.max_countimq.system.max_size 代理程式特性,可控制這些限制。

例如:

imq.system.max_count=5000

以上定義的值,表示代理程式最多只會保留 5000 個未傳送/未確認的訊息。如果傳送額外訊息,則會被代理程式拒絕。如果為永久性訊息,那麼產生器在嘗試傳送訊息時會發生異常。如果為非永久性訊息,代理程式會直接丟棄訊息。

當傳送訊息時傳回異常,用戶端應稍作暫停並試著再傳送一次。(請注意,永遠不會因為代理程式接收訊息失敗而發生異常;所發生的異常都是由傳送端的用戶端所偵測到的異常。)

多重用戶佇列效能

多個佇列用戶在佇列目標中處理訊息的效率,取決於下列可配置的佇列目標屬性:

若要達到最佳的訊息流量,必須有充足的使用中用戶數目以滿足佇列產生訊息的速率,並且將佇列中的訊息路由並傳送到使用中用戶時,必須能讓使用的速率達到最快。「Sun Java SystemTM Message Queue 技術摘要」中描述平衡多個用戶上訊息傳送的一般機制。

如果訊息累積在佇列中,那麼使用中用戶數目可能會不足以處理訊息負載。也有可能發生以下情形:以批次大小傳送到用戶的訊息會在用戶上進行備份。例如,如果批次大小 (consumerFlowLimit) 過大,一個用戶可能會接收佇列中的所有訊息,而其他使用中用戶則收不到任何訊息。如果用戶處理速度非常快,這可能不會發生問題。

但是,如果用戶的速度相對較慢,那麼您必須將訊息平均分發給用戶,如此一來,批次大小也會變小。批次大小越小,傳送訊息至用戶所需的經常性耗用時間就越長。然而,針對處理速度慢的用戶,網路效能改善比率通常會使用小型的批次大小。