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();
}
나의 의심은 다음과 같습니다
- 은 무엇 톰캣 서버가 처리 할 수있는 동시 파일 업로드의 최대 수 (각 100메가바이트 파일) 될 수 있을까?
- 250 개의 연결 스레드를 모두 사용하려면 내 코드에 어떤 최적화가 필요합니까?
- 소개
sleep
은 오랜 업로드를 유발할 수 있습니다. 효율적인 코드를 작성하는 방법?
미리 감사드립니다.
관련, 킹슬리 르우벤 J
참고 :이 문제를
확답을 내리기가 어렵습니다. 그것은 많은 요소에 따라 달라집니다 : "컴퓨터 (CPU, RAM),이 작업 옆에있는로드, 업로드 된 파일 (저장 또는 다른 처리)로 수행 할 작업, 사용할 수있는 대역폭 등에 따라 달라지는 전원 ... –
서버 컴퓨터는 파일을 받고 저장하는 것 외에 다른 프로세스가 없습니다. 또한 듀얼 코어 프로세서가 장착 된 8GB RAM이 있습니다 –
직접하지 마십시오. Commons FileUpload (http : /commons.apache.org/fileupload/) 아무런 버그도없고 확장 성도 없음 – skaffman