0

Netty で実行され、5 MB から 500 MB の多数のファイルをアップロード (ストリーミング) するために使用される Java REST サービスがあります。ある時点で同時アップロードの数を増やしていると、アプリケーションがメモリ不足になることが予想されますが、このシナリオでどの Java GC および VM 設定を使用してパフォーマンスを改善し、メモリフットプリントを削減します。誰かが同じような経験を共有できれば、本当に感謝しています。

更新:質問にさらにコンテキストを追加するために、REST サービスはファイルをストリームとして取得し、同じストリームを Amazon S3 に渡します。

4

1 に答える 1

0

大量のデータを送信する場合は、フロー制御を使用する必要があります。データを送信する前にチャネルが書き込み可能かどうか (Channel.isWritable()) を確認し、準備が整うまで待つことができます。ChannelInboundHandler.channelWritabilityChanged(ChannelHandlerContext ctx) を介して通知を使用して、これを追跡できます。フロー制御がなければ、すべての大きなファイルは、Netty の出力バッファーで送信するのを待ってメモリを消費します。

于 2013-10-12T05:33:51.753 に答える