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

监控

当您使用 @EnableWebSocketMessageBroker<websocket:message-broker> 时,关键基础设施组件会自动收集统计数据和计数器,这些数据和计数器可以提供有关应用程序内部状态的重要见解。该配置还声明了一个类型为 WebSocketMessageBrokerStats 的 Bean,该 Bean 会将所有可用信息集中在一起,并默认每隔 30 分钟在 INFO 级别记录一次。可以通过 Spring 的 MBeanExporter 将此 Bean 导出到 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会话的数量加上一个额外的共享“系统”连接,用于从应用程序内部发送消息。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