私はNettyチャンネルで作業していますが、チャンネル全体で多くのデータを送信すると、Channel.channelInterestChanged
イベントが発生し、すぐにChannel.isWritable()
という結果が返されます(Channel.write()
このスレッドはすぐに失敗します)。私の質問は、チャンネルの興味が変わる理由は何ですか?それとも誰がそれを変えているのだろうか?私が書いたコード(サーバーまたはクライアント)は、関心を変えません。Channel.channelInterestChanged in Netty
2
A
答えて
3
チャンネルにさらにデータを書き込んだ後、一定の時間内に送信できるので変更されます。 Nettyは、ある閾値がヒットするまでデータをキューに入れます。ヒットしたら、Channel.isWritable()はfalseを返します。
Channel.isWritable()がfalseを返す前に、キューに入れられる/バッファに入れられるバイト数を変更するには、writeBufferHighWaterMarkとwriteBufferLowWaterMarkを調整する必要があります。
ServerBootstrap sb = ....
sb.setOption("writeBufferHighWaterMark", ..);
sb.setOption("writeBufferLowWaterMark", ..);
とにかくあなたはChannel.write(...)を呼び出すコードがChannel.isWritable()をチェックし、唯一それがtrueを返す場合に書き込みないことを確認してください。あなたが持っている問題は、低速ネットワークでよく見られます。
[1] http://netty.io/docs/stable/api/org/jboss/netty/channel/socket/nio/NioChannelConfig.html
関連する問題
- 1. io.netty.util.IllegalReferenceCountException:refCnt:0 in Netty
- 2. リストをチャンクする方法 in Netty
- 3. nettyがnetty-tcnativeを検出しない
- 4. Nettyユーザーイベント
- 5. Netty Websocket
- 6. Nettyデコーダエンコーダエラー
- 7. Nettyフィルタリングリバースプロキシ
- 8. Netty port on Heroku
- 9. Netty - ハンドルAnnotatedConnectException
- 10. NoClassDefFoundErrorとNetty
- 11. Netty UDP DatagramPacketデシリアライズ?
- 12. JBoss Netty with JSON
- 13. netty-all 4.1.3+
- 14. NettyとByteOrder
- 15. Netty Channel closed detection
- 16. Netty 3.10.5-final "lags"
- 17. Netty websocket close gracefully
- 18. Syslog Netty Server - Defaultdelimiter
- 19. Netty ChannelOutboundHandlerAdapter write
- 20. Netty channelActiveとchannelRead0
- 21. Netty HttpProxyHandlerの例
- 22. Nettyクライアントクリーンマルチパートtmpデータ
- 23. Netty HttpObjectAggregator with Http2
- 24. Nettyロード・バランサ
- 25. Netty SSLハンドラユニットテスト
- 26. Nettyのユニットテスト4.1.6
- 27. NettyのChannel.messageReceivedイベント
- 28. Netty WebSockets&tcpソケット
- 29. Netty Camelサンプル
- 30. Akka Nettyバインドポート0
私たちは何をすればよいですか? – WorM
書き込みをやめてもう一度書き込み可能にしたら続ける –
には、nettyを使用してリモートでウィンドウ枠のサイズの変化を検出する方法がありますか?もしあれば、これに対応するためにアプリケーションレベルで何かできるのでしょうか? – WorM