Print
카테고리: [ Web Application Server ]
조회수: 6851

1. 개요

Apache - JBoss 구조에서 2GB 이상 파일 요청 시 응답 헤더에 Content-Length가 표시되지 않는 이슈가 있다. 정확히 어느 구간의 문제인지 확인하기 위하여 여러 포인트에 직접 요청을 날려보았다.


2. 테스트 

2-1. Apache (2.2.27)

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:2482044928
Content-Type:application/x-gzip
Date:Fri, 12 Sep 2014 01:07:48 GMT
ETag:"140032-93f10000-500e216017f6d"
Keep-Alive:timeout=3, max=100
Last-Modified:Mon, 18 Aug 2014 07:11:55 GMT
Server:Apache

2-2. JBoss EAP (6.2)

Accept-Ranges:bytes
Content-Length:2482044928
Content-Type:application/x-gzip
Date:Fri, 12 Sep 2014 01:04:24 GMT
ETag:W/"2482044928-1410483441000"
Last-Modified:Fri, 12 Sep 2014 00:57:21 GMT
Server:Apache-Coyote/1.1

2-3. Tomcat (7.0.55)

Accept-Ranges:bytes
Content-Length:2482044928
Content-Type:application/x-gzip
Date:Fri, 12 Sep 2014 01:15:06 GMT
ETag:W/"2482044928-1410483441000"
Last-Modified:Fri, 12 Sep 2014 00:57:21 GMT
Server:Apache-Coyote/1.1

2-4. Apache (2.2.27) - JBoss EAP (6.2)

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Type:application/x-gzip
Date:Fri, 12 Sep 2014 01:00:25 GMT
ETag:W/"2482044928-1410483441000"
Keep-Alive:timeout=3, max=100
Last-Modified:Fri, 12 Sep 2014 00:57:21 GMT
Server:Apache
Transfer-Encoding:chunked

▶ Content-Length 정보 포함되지 않았다. 요청 시 파일 처리(다운로드)는 잘된다.

2-5. Apache (2.2.27) - Tomcat (7.0.55)

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:2482044928
Content-Type:application/x-gzip
Date:Fri, 12 Sep 2014 01:13:21 GMT
ETag:W/"2482044928-1410483441000"
Keep-Alive:timeout=3, max=100
Last-Modified:Fri, 12 Sep 2014 00:57:21 GMT
Server:Apache


3. 결과

위의 테스트 결과에서 보면, 2G 이상 파일을 Apache - JBoss 연동하여 처리할 때만 Content-Length가 포함되어 있지 않다. (즉, 해당 파일을 JBoss 에서 처리할 때)

물론 다운로드는 잘 되지만, Content-Length 가 없어서 브라우저에서 다운로드 할 때 총 파일 용량이 표시되지 않고 현재 다운로드 받는 크기만 표시된다. 즉, 15MB/2.3GB 처럼 나오지 않고 15MB 만 나온다.

추가적으로 Apache - JBoss 연동에서 2GB 이하 파일로 테스트 해봤다.

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:938882272
Content-Type:application/x-gzip
Date:Fri, 12 Sep 2014 01:32:36 GMT
ETag:W/"938882272-1410485435000"
Keep-Alive:timeout=3, max=100
Last-Modified:Fri, 12 Sep 2014 01:30:35 GMT
Server:Apache

이 경우는 정상적으로 Content-Length가 표시되었다. 결론적으로 Apache - JBoss 연동 시에만, 2GB 이상일 때 Content-Length가 없다.

Apache - Tomcat일 때는 잘 되기 때문에 mod_jk 문제라고 보기는 힘들다.


4. Content Length와 Chunked 방식의 차이

4-1. Content Length 방식

4-2. Chunked 방식