对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

监控

当你使用 @EnableWebSocketMessageBroker<websocket:message-broker> 时,关键的基础设施组件会自动收集统计信息和计数器,从而提供对应用程序内部状态的重要洞察。该配置还会声明一个类型为 WebSocketMessageBrokerStats 的 Bean,它将所有可用信息集中到一处,并默认每 30 分钟以 INFO 级别记录一次日志。此 Bean 可通过 Spring 的 MBeanExporter 导出到 JMX,以便在运行时查看(例如,通过 JDK 自带的 jconsole)。以下列表汇总了可用的信息:spring-doc.cadn.net.cn

客户端 WebSocket 会话
当前

指示当前有多少个客户端会话,其中进一步细分为 WebSocket 会话与 HTTP 流式传输和轮询的 SockJS 会话。spring-doc.cadn.net.cn

总计

指示已建立的会话总数。spring-doc.cadn.net.cn

异常关闭
连接失败

已建立但因在60秒内未收到任何消息而被关闭的会话。这通常表明存在代理或网络问题。spring-doc.cadn.net.cn

发送次数超出限制

会话在超过配置的发送超时时间或发送缓冲区限制后被关闭,这种情况可能发生在慢速客户端上(参见前一节)。spring-doc.cadn.net.cn

传输错误

会话在传输错误(例如无法读取或写入 WebSocket 连接,或 HTTP 请求或响应)之后关闭。spring-doc.cadn.net.cn

STOMP 帧

已处理的 CONNECT、CONNECTED 和 DISCONNECT 帧的总数,表示在 STOMP 层有多少客户端进行了连接。请注意,当会话异常关闭或客户端在未发送 DISCONNECT 帧的情况下直接关闭时,DISCONNECT 帧的数量可能会偏低。spring-doc.cadn.net.cn

STOMP 代理中继
TCP 连接

指示代表客户端 WebSocket 会话建立到代理的 TCP 连接数量。该值应等于客户端 WebSocket 会话数 + 1 个额外的共享“系统”连接,用于从应用程序内部发送消息。spring-doc.cadn.net.cn

STOMP 帧

代表客户端转发给代理或从代理接收的 CONNECT、CONNECTED 和 DISCONNECT 帧的总数。请注意,无论客户端 WebSocket 会话以何种方式关闭,都会向代理发送一个 DISCONNECT 帧。因此,较低的 DISCONNECT 帧计数表明代理正在主动关闭连接(可能是因为心跳未及时到达、接收到无效的输入帧或其他问题)。spring-doc.cadn.net.cn

客户端入站通道

用于支持 clientInboundChannel 的线程池的统计信息,可帮助了解传入消息处理的健康状况。此处任务排队积压表明应用程序处理消息的速度可能过慢。如果存在 I/O 密集型任务(例如,缓慢的数据库查询、向第三方 REST API 发起的 HTTP 请求等),请考虑增大线程池的大小。spring-doc.cadn.net.cn

客户端出站通道

用于支持 clientOutboundChannel 的线程池的统计信息, 可帮助了解向客户端广播消息的健康状况。此处任务排队积压表明客户端处理消息的速度过慢。 一种解决方法是增加线程池大小,以容纳预期数量的并发慢速客户端。 另一种选择是减少发送超时时间和发送缓冲区大小限制(参见上一节)。spring-doc.cadn.net.cn

SockJS 任务调度器

用于发送心跳的 SockJS 任务调度器线程池的统计信息。请注意,当在 STOMP 层面协商了心跳机制时,SockJS 的心跳将被禁用。spring-doc.cadn.net.cn