【发布时间】:2014-10-08 19:03:41
【问题描述】:
我有一个非常简单的基于 Jetty 的 websockets 服务器,负责流式传输小的二进制消息以连接客户端。
为了避免服务器端出现任何阻塞,我使用了 sendBytesByFuture 方法。
将负载从 2 个客户端增加到 20 个后,它们停止接收任何数据。在故障排除过程中,我决定打开同步发送方法,最终得到了潜在的原因:
java.lang.IllegalStateException: Blocking message pending 10000 for BLOCKING
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.lockMsg(WebSocketRemoteEndpoint.java:130)
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendBytes(WebSocketRemoteEndpoint.java:244)
客户端在接收数据时不进行任何计算,因此他们可能不会是慢速加入者。
所以我想知道我能做些什么来解决这个问题? (使用 Jetty 9.2.3)
【问题讨论】:
-
这是使用 JSR-356 (javax.websocket) 还是原生 websocket api?
-
原生,随 Jetty 本身提供