我有一個Tomcat服務器有250個連接線程。當我爲30個文件(每個100 MB)模擬併發文件上傳時,服務器機器的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個MB的文件)?
- 在我的代碼中是否需要使用所有250個連接線程進行優化?
- 介紹
sleep
會導致長時間上傳。如何編寫高效的代碼?
在此先感謝。
問候, 金斯利呂便·傑
注:我將無法使用第三方應用程序來解決此問題
很難給出明確的答案。這取決於很多因素:「你的機器(CPU,RAM)帶來的功耗,除此任務外的負載,你想要對上傳的文件(存儲或其他處理)做什麼,可用帶寬... – 2010-12-14 13:44:00
The服務器機器除了接收文件和存儲它們之外沒有任何其他的進程,而且機器有8GB RAM和雙核處理器 – 2010-12-14 14:17:04
不要手動執行此操作,請使用像Commons FileUpload(http:///commons.apache.org/fileupload/)。沒有錯誤,並且可以正確擴展。 – skaffman 2010-12-14 14:52:59