WebSocket, async senden führen kann, blockiert senden sobald die queue gefüllt

Habe ich ziemlich einfachen Jetty-basierten websockets-server, verantwortlich für das streaming von kleinen binären Nachrichten: verbinden von clients.

Um keine Sperrung auf server-Seite war ich mit sendBytesByFuture Methode.

Nachdem die steigende Belastung von 2 Kunden um 20, hören Sie auf, erhalten Sie keine Daten. Während der Fehlersuche habe ich beschlossen, wechseln auf die synchrone send-Methode und endlich mögliche Ursache:

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)

Kunden nicht tun, werden keine Berechnungen nach Erhalt der Daten, so dass Sie möglicherweise nicht sein können, langsam Zugänge.

Also ich Frage mich, was kann ich tun, um dieses problem zu lösen?
(mit Jetty 9.2.3)

  • Ist dies mithilfe von JSR-356 (javax.websocket) oder native websocket-api?
  • Native, ausgeliefert mit Steg selbst
InformationsquelleAutor rimas | 2014-10-08
Schreibe einen Kommentar