私は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. Nettyユーザーイベント
- 2. Netty WebSockets&tcpソケット
- 3. NoClassDefFoundErrorとNetty
- 4. NettyのChannel.messageReceivedイベント
- 5. Netty SSLハンドラユニットテスト
- 6. Netty Channel closed detection
- 7. NettyとByteOrder
- 8. Netty Camelサンプル
- 9. JBoss Netty with JSON
- 10. Nettyロード・バランサ
- 11. Netty SSL:TrustManagerを書く方法
- 12. Netty 4パフォーマンス低下
- 13. nettyとウェブソケットのサポート
- 14. Netty SSL/TLS/HTTPSサポート
- 15. Java netty get POSTリクエストコンテンツ
- 16. Netty高可用性クラスタ
- 17. JREだけのNettyデプロイ
- 18. Nettyでフラグメンテーションを扱う
- 19. NettyでのWSDLの使用
- 20. Nettyの安定性3.5.0
- 21. Nettyイベントループキューのサイズの監視
- 22. 桟橋とNettyの統合
- 23. Netty Channel.writeはスレッドセーフですか?
- 24. Http Server Push with Netty + protobuf
- 25. [NETTY]:メソッドへのurlpathのマップ
- 26. Netty回転再接続ハンドラ
- 27. nettyとのフラッシュバイナリソケット通信
- 28. NettyのChannelLocalの使用
- 29. Nettyの同期HTTPコール
- 30. サーブレットコンテナ内のNettyベースのサーバ
私たちは何をすればよいですか? – WorM
書き込みをやめてもう一度書き込み可能にしたら続ける –
には、nettyを使用してリモートでウィンドウ枠のサイズの変化を検出する方法がありますか?もしあれば、これに対応するためにアプリケーションレベルで何かできるのでしょうか? – WorM