監控

當您使用 @EnableWebSocketMessageBroker<websocket:message-broker> 時,關鍵基礎設施元件會自動收集統計資料和計數器,這些資料和計數器提供了對應用程式內部狀態的重要洞察。該配置還會宣告一個型別為 WebSocketMessageBrokerStats 的 bean,該 bean將所有可用資訊集中在一起,並預設每 30 分鐘以 INFO 級別記錄一次。此 bean 可以透過 Spring 的 MBeanExporter 匯出到 JMX,以便在執行時檢視(例如,透過 JDK 的 jconsole)。以下列表總結了可用資訊:

客戶端 WebSocket 會話
當前

指示當前有多少客戶端會話,其中計數根據 WebSocket 與 HTTP 流式傳輸和輪詢 SockJS 會話進一步細分。

總計

指示已建立的總會話數。

異常關閉
連線失敗

已建立但由於在 60 秒內未收到任何訊息而關閉的會話。這通常表示代理或網路問題。

超出傳送限制

由於超出配置的傳送超時或傳送緩衝區限制而關閉的會話,這可能發生在慢速客戶端上(請參閱上一節)。

傳輸錯誤

由於傳輸錯誤而關閉的會話,例如未能讀取或寫入 WebSocket 連線或 HTTP 請求或響應。

STOMP 幀

已處理的 CONNECT、CONNECTED 和 DISCONNECT 幀的總數,指示有多少客戶端在 STOMP 級別連線。請注意,當會話異常關閉或客戶端在未傳送 DISCONNECT 幀的情況下關閉時,DISCONNECT 計數可能會較低。

STOMP 代理中繼
TCP 連線

指示代表客戶端 WebSocket 會話與代理建立的 TCP 連線數。這應該等於客戶端 WebSocket 會話數 + 1 個額外的共享“系統”連線,用於從應用程式內部發送訊息。

STOMP 幀

代表客戶端轉發到或從代理接收的 CONNECT、CONNECTED 和 DISCONNECT 幀的總數。請注意,無論客戶端 WebSocket 會話如何關閉,都會向代理傳送 DISCONNECT 幀。因此,較低的 DISCONNECT 幀計數表示代理正在主動關閉連線(可能是由於心跳未及時到達、無效輸入幀或其他問題)。

客戶端入站通道

來自支援 clientInboundChannel 的執行緒池的統計資料,提供對傳入訊息處理狀況的洞察。任務在此處排隊表示應用程式處理訊息的速度可能過慢。如果存在 I/O 密集型任務(例如,慢速資料庫查詢、對第三方 REST API 的 HTTP 請求等),請考慮增加執行緒池大小。

客戶端出站通道

來自支援 clientOutboundChannel 的執行緒池的統計資料,提供對向客戶端廣播訊息狀況的洞察。任務在此處排隊表示客戶端消耗訊息的速度過慢。解決此問題的一種方法是增加執行緒池大小以適應預期的併發慢速客戶端數量。另一個選項是減少傳送超時和傳送緩衝區大小限制(請參閱上一節)。

SockJS 任務排程器

來自用於傳送心跳的 SockJS 任務排程器的執行緒池的統計資料。請注意,當在 STOMP 級別協商心跳時,SockJS 心跳會被停用。

© . This site is unofficial and not affiliated with VMware.