私は250の接続スレッドを持つTomcatサーバーを持っています。 30ファイル(100MBごと)の同時ファイルアップロードをシミュレートすると、サーバーマシンのCPUとRAMメモリーがピークに達し、つまり95%の使用率になります。Tomcat最大同時ファイルアップロード数
次のコードブロックを使用して、HTTP Postからファイルデータを読み取ります。
// request is instance of HTTPServletRequest
int nDataLength = request.getContentLength();
byte dataBytes[] = new byte[nDataLength];
int bytesRead = 0;
int totalBytesRead = 0;
int bytesLimit = 1024;
InputStream in = new InputStream(request.getInputStream());
try
{
while(totalBytesRead < nDataLength)
{
bytesRead = in.read(dataBytes, totalBytesRead, bytesLimit);
totalBytesRead += bytesRead;
}
}
catch(Exception ex)
{
throw ex;
}
finally
{
in.close();
}
私の疑問は、次のとおりです。
- のTomcatサーバーが処理できる同時ファイルアップロード(各100メガバイトのファイル)の最大数何ができますか?
- すべての250の接続スレッドを使用するために、自分のコードに最適化が必要ですか?
sleep
が導入されると、アップロードが長くなる可能性があります。効率的なコードを書くには?
ありがとうございます。
に関して、 キングスレールーベンJ
注:私はこの問題を解決するためにサードパーティ製のアプリケーションを使用できるように文句を言わない
決定的な回答者を与えるのは難しいです。それは多くの要因によって異なります:あなたのマシン(CPU、RAM)、このタスクの横にある負荷、アップロードしたファイル(ストレージまたは別の処理)で何をしたいか、使用可能な帯域幅などによって決まります... –
サーバマシンにファイルを受信して保存する以外に、デュアルコアプロセッサを搭載した8GBのRAMがあります –
これを手動で行うのではなく、Commons FileUpload(http: /commons.apache.org/fileupload/)バグがなく、適切にスケーラブルである – skaffman