依預設,代理程式會使用 192MB 的 JVM 堆疊容量。此容量對大量的訊息負載通常過小,所以應增加其大小。
當代理程式將要耗盡 Java 物件使用的 JVM 堆疊儲存區空間時,會使用各種技術 (如流量控制和訊息交換) 來釋放記憶體。在極端情況下,它甚至會關閉用戶端連線以釋放記憶體,並降低訊息的傳入量。因此,最好將最大 JVM 堆疊儲存區空間設定得足夠大,以避免發生此類情況。
但是,如果將最大 Java 堆疊儲存區空間設定得過大 (相對於系統實體記憶體),代理程式會持續增加 Java 堆疊儲存區空間,直至整個系統的記憶體用完。這會導致效能降低、不可預料的代理程式當機,和/或影響系統上執行的其他應用程式和服務的運作。一般而言,您需要允許足夠用於作業系統和機器上其他執行應用程式的實體記憶體。
一般而言,最好先評估正常時段和尖峰時段的系統記憶體使用量,然後再配置 Java 堆疊容量,該容量大小應足以提供良好的效能,但又不至於大到導致系統記憶體問題。
若要變更代理程式的最小和最大堆疊容量,請在啟動代理程式時,使用 -vmargs 指令行選項。例如:
/usr/bin/imqbrokerd -vmargs "-Xms256m -Xmx1024m"
此指令會將 Java 堆疊容量的下限設定為 256MB,上限為 1GB。
在 Solaris 或 Linux 上,如果經由 /etc/rc* (也就是 /etc/init.d/imq) 啟動代理程式,則請在 /etc/imq/imqbrokerd.conf (Solaris) 或 /etc/opt/sun/mq/imqbrokerd.conf (Linux) 檔案中,指定代理程式指令行引數。請查看檔案中的註解,以取得更多資訊。
在 Windows 上,如果將代理程式當成 Windows 服務啟動,則請使用 -vmargs 選項,將 JVM 引數指定到 imqsvcadmin install 指令。請參閱第 13 章, 指令行參照中的服務管理員公用程式。
在任何狀況下,都請檢查代理程式的記錄檔或使用 imqcmd metrics bkr -m cxn 指令,以驗證設定。