2편에 이어 Apache Tomcat 성능 최저화를 위한 부가적인 환경설정 튜닝 항목에 대해 설명드리도록 하겠습니다. 환경설정에 따라 웹서버의 성능상에 차이는 매우 크게 나타날수 있습니다. 다음 본문 내용을 참고하여 현재 운영중인 사이트의 환경과 비교해보고 적절하게 적용하여 최적화 진행하시기 바랍니다.
리소스 캐싱 설정 조정
Tomcat 리소스 캐시 설정성능을 개선하기 위해 Tomcat은 기본적으로 정적 리소스를 캐시하도록 구성되어 있습니다. 그러나 캐시 크기는 성능 절감을 제공할 만큼 충분히 크게 구성해야 합니다. Tomcat의 캐시 설정을 조정하려면 Context 지시문(server.xml 또는 context.xml)을 찾고 cacheMaxSize 속성을 적절한 값으로 설정합니다.
데이터베이스 연결 풀링
데이터베이스 연결 풀링데이터베이스에 대한 연결 오픈은 비용이 많이 듭니다. 연결 풀링은 열린 연결 풀을 갖는 데이터베이스 액세스를 최적화하는 일반적인 기술로, 요청이 풀에서 연결을 가져와 작업이 완료되면 연결을 다시 풀로 반환할 수 있습니다. 각 요청에 대해 연결을 만들고 해제할 필요가 없으므로 연결 풀링은 애플리케이션 응답을 더 빠르게 하고 데이터베이스 서버에서 연결 처리 오버헤드를 줄일 수 있습니다. Tomcat에는 데이터베이스 연결 풀링에 대한 기본 제공 지원이 있습니다.
스레드 풀의 경우와 마찬가지로 데이터베이스 연결 풀의 maxActive 설정을 확인하세요. 이 설정은 풀에서 활성 연결의 최대 수가 처리하는 작업 부하를 수용할 만큼 충분히 큰지 여부를 정의합니다. 데이터베이스 연결 풀 사용량을 모니터링하세요. 연결 풀이 완전히 활용되면 새로운 요청은 사용 가능한 연결이 생길 때까지 기다려야 하므로 응답 시간이 늘어납니다.
Web.xml 최적화
Web.xml 최적화server.xml 파일은 서버별 구성을 지정하는 데 사용됩니다. 각 Tomcat 서버 인스턴스에 대해 server.xml은 하나만 있습니다. web.xml 파일은 웹 애플리케이션별 구성을 지정하는 데 사용됩니다. Tomcat 서버에 배포된 각 웹 애플리케이션에 대해 web.xml 파일이 하나씩 있습니다. 모든 웹 애플리케이션에서 상속된 기본 설정은 주 Tomcat 구성 디렉토리의 web.xml 파일에 의해 정의됩니다.
이 파일의 기본 속성 값은 개발 환경에 맞게 조정되었으며 프로덕션 배포를 위해 수정해야 합니다. Java Server Pages(JSP) 컴파일러 설정에는 개발 모드 설정이 있습니다. 이는 기본적으로 true입니다. 재컴파일이 필요한지 확인하기 위해 JSP를 자주 확인하는 것을 피하려면 이를 false로 변경합니다. 프로덕션 서버에서 컴파일 오버헤드를 피하기 위해 JSP를 미리 컴파일합니다.
마찬가지로, 더 효율적인 char 배열을 생성하려면 genStringAsCharArray를 “true”로 설정합니다. 응답에서 불필요한 바이트를 제거하려면 trimSpaces를 “true”로 설정합니다.
고성능을 위한 애플리케이션 코드 조정
비효율적인 애플리케이션 코드는 Tomcat에 배포된 애플리케이션이 느려지는 원인이 될 수도 있습니다. 로깅은 애플리케이션의 작업을 추적하는 일반적인 방법입니다. 그러나 출력 파일에 로깅하는 것은 동기화된 작업이며 과도한 로깅은 실제로 애플리케이션 성능을 저하시킬 수 있습니다.
바이트 코드 계측을 기반으로 하는 트랜잭션 추적 기술을 사용 하여 애플리케이션 코드를 변경하지 않고도 애플리케이션 처리를 모니터링합니다. 이러한 기술은 JVM이 제공 하는 계측 API를 활용 하여 JVM에 로드된 기존 바이트 코드를 변경하는 특별히 제작된 jar 파일에 의존합니다.
IT 팀과 개발자는 이 기능을 사용하여 느린 트랜잭션을 자세히 살펴보고 최종 사용자에게 영향을 미치기 전에 성능 문제를 사전에 감지할 수 있습니다. 분산 트랜잭션 추적은 Tomcat으로 구동되는 웹 애플리케이션의 코드 수준 문제를 식별하는 데 사용됩니다.
결론
Tomcat과 같은 Java 기반 애플리케이션 서버가 느리거나 프로덕션에 적합하지 않다는 말을 자주 들을 수 있습니다. 이 블로그에서는 Tomcat 웹 애플리케이션 서버를 최대한 활용할 수 있는 다양한 모범 사례 구성을 제공했습니다. eG Enterprise 애플리케이션 성능 모니터링 솔루션은 Apache Tomcat을 핵심 컨테이너 엔진으로 사용하며 수만 대의 서버, 수천만 개의 실시간 메트릭, 프로덕션에서 10만 명이 넘는 최종 사용자를 모니터링하는 데 널리 배포되었습니다. 따라서 여기에서 제공한 모범 사례가 실제로 작동한다는 것을 확신할 수 있습니다!