본문 바로가기

Apache / Tomcat

Tomcat7 성능 튜닝 방법

반응형


톰캣은 오픈소스이다 보니 기본적으로 설정되어 있는 값들이 상당히 루즈하게 되어있다.
기본 설정값들을 그대로 사용하는것보다는 자신의 서버 환경에 맞게 어느정도 튜닝이 되어야 톰캣이 최적의 성능을 낼 수 있다.

오늘은 내가 사용하는 기본적인 톰캣 튜닝 몇가지 방법을 정리해 보았다.

톰캣 설정을 하기 위해선 $TOMCAT_HOME/conf/server.xml 에서 설정을 해주면 된다.



1. Listener

   <Listener className="org.apache.catalina.security.SecurityListener" checkedOsUsers="root" />

   톰캣 시작시 root로 실행하는것을 방지하는 부분이다. 톰캣 단독으로 80포트 이용시에는 필요없을 부분이긴 하지만,
   그렇지 않다면 해당 옵션을 켜주는게 좋다. root 실행은 퍼미션 문제든 여러 문제점을 야기하므로 특별한 경우가 아니면
   root 실행은 하지 말자.

   * 구문은 주석으로 처리되어 있으니, 주석을 해제하자.




2. Connector
  
   1) connectionTimeout="5000"
   타임아웃 시간을 지정한다. 연결 요청후 URI 요청이 들어오기까지의 대기시간이다. 기본값은 60초이며
   타임아웃 시간을 10초 이내로 지정하는게 좋다.(5000은 5초 이다)


   2) minSpareThreads="25"
   Tomcat이 실행될때 생성되는 스레드 사이즈 이다.


   3) maxThreads="100"
   Tomcat의 최대 스레드 수를 지정한다. 최대 접속가능한 Active User의 수를 뜻한다.

   일반적으로 100 내외가 적절하다고 알려져 있다.


   4) acceptCount="100"
   Tomcat의 스레드가 full 일 경우 요청을 대기하는 queue의 길이이다.

   순간적인 과부화 상황에 대비하기 위해 큐의 길이을 10내외 정도로 짧게 주는게 좋다고 한다.


   5) disableUploadTimeout="true"
   데이터를 업로드할 시에 connectionTimeout을 끌것인지에 대한 내용이다.

   데이터가 큰 경우 업로드 시간이 connectionTimeout을 넘는경우가 많으므로 설정하는게 좋다.


   6) maxConnections="8192"
   Tomcat이 유지할수 있는 커넥션 최대 수이다.

   하지만 현재 연결되어 있는 실제 커넥션의 최대 수는 아니다.(TIME_WAIT 등과 같은 커넥션 존재)




톰캣 성능 튜닝은 서비스 목적에 맞게 적절하게 변경하는게 좋다. 예를들어 REST 서비스, Web 서비스 등 서비스 형태에 따라 톰캣 설정값이 달라질수 있다.


시간적 여유가 된다면, 톰캣 튜닝은 Jmeter와 같은 스트레스 툴을 적절하게 돌려가며 최적의 튜닝값을 찾아내는게 좋다.