너무 오래된 Tomcat 버전으로 서비스를 운영하고 있어서,

WAS성능 향상을 위해 부장님과 회의 끝에 Tomcat 7 -> Tomcat 9 버전으로 업데이트 하기로 하였다.

 

Tomcat 7 에서 Tomcat 9 로 버전 업데이트 시 발생한 이슈사항을 정리 하고자 한다.

 

1. Tomcat 7과 Tomcat 9의 Connector옵션의 maxPostSize 차이

 

Tocmat 7의 경우 maxPostSize의 MAX값은 '0'

Tomcat 9의 경우 maxPostSize의 MAX값은 '-1'

 

Tomcat 7의 옵션을 그대로 가져왔더니 발생한 이슈였다.

post로 전송되는 패킷의 크기가 '0'으로 세팅되어서 패킷 사이즈 오류가 발생하였다.

 

구글링 해보니 Tomcat 8버전 부터 maxPostSize의 MAX값은 '-1'로 수정되었다고 한다.

 

2. Connector 옵션의 packetSize 차이

 

Tomcat 7의 AJP Connector 옵션의 packetSize가 '65536'으로 MAX값으로 세팅 되어 있었고

이를 Tomcat 9의 Connector 옵션에도 packetSize를 동일하게 적용하였더니,

계속해서 502 Bad GateWay 오류가 발생하였다.

 

왜 오류가 날 까 확인해보니....(원인을 찾는데 상당한 시간이 소요되었다)

 

Apache 웹 서버의 workers.proprerties 파일의 worker.template.max_packet_size=65536 가 아래와 같이 주석처리가 되어 있었다. (Tomcat 7에서는 해당 부분을 무시하는 듯 하다)

 

cat workers.properties

#worker.template.max_packet_size=65536

 

해당 내용을 주석 해제 후 packetSize를 설정해주니 정상적으로 동작하였다.

=> apache>workers.properties>worker.template.max_packet_size와 tomcat>server.sml>connector(AJP)의 packetSize 속성 값은 반드시 동일해야 한다.!

 

만약 packetSize를 설정해주지 않을 경우 default 값인 8192로 동작하며

request 값의 패킷 사이즈가 8192가 넘어갈 경우 패킷 사이즈 오류가 발생한다.

 

따라서 packetSize 값을 Apache의 workers.properties와 Tomcat의 server.xml파일에

packetSize를 MAX 값으로 설정해주어야 한다.

 

 

3. JDK 버전 차이

 

Tomcat 9 는 JDK 1.8 이후 버전을 지원한다.

따라서 현재 서비스 되는 JDK의 버전을 1.6 -> 1.8로 업데이트 하였다.

 

 

그 외에는 특이사항 없이 WEB/WAS AJP설정, 도메인 별 Tomcat 인스턴스 추가 설정 등을 완료하였다.

 

※ 참고 URL

https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html

 

Apache Tomcat 9 Configuration Reference (9.0.24) - The AJP Connector

The proxyName and proxyPort attributes can be used when Tomcat is run behind a proxy server. These attributes modify the values returned to web applications that call the request.getServerName() and request.getServerPort() methods, which are often used to

tomcat.apache.org

https://tomcat.apache.org/tomcat-9.0-doc/config/http.html

 

Apache Tomcat 9 Configuration Reference (9.0.24) - The HTTP Connector

This Connector supports all of the required features of the HTTP/1.1 protocol, as described in RFCs 7230-7235, including persistent connections, pipelining, expectations and chunked encoding. If the client supports only HTTP/1.0 or HTTP/0.9, the Connector

tomcat.apache.org

 

+ Recent posts