我有一个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