Web/Was 설정 중 특히 JAVA는 JVM 이라는 특징때문에 설정이 아주 중요하다.
아래의 설정만 바꿔줘도 좋다.
1. JVM Heap Memory Size 변경
- $CATALINA_HOME/bin/catalina.sh 파일에 아래 내용을 추가
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"
찾아보기 쉽게 제일 상단에 넣자!
JVM Default Heap Memory Size 는 64MB 이므로 최소한 -server, -Xms, -Xmx 옵션은 설정해야 한다.
JVM OPTION 참고
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
http://reins.altervista.org/java/A_Collection_of_JVM_Options_MP.html
2. JRE 메모리 누수 처리
- Tomcat 6.0.26부터 메모리 누수를 탐지하는 기능 추가됨
- $CATALINA_HOME/conf/server.xml 파일에서 아래 코드를 찾아 주석 해제
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
3. 쓰레드 풀(thread pool) 설정
- 클라이언트의 요청을 처리하는 쓰레드 수 설정. 기본 값은 200이며 그 이상의 요청이 있을 경우 "connection refused" 메시지 리턴
- $CATALINA_HOME/conf/server.xml 파일에서 <Connector />의 속성을 수정한다.
<Connector port="8080" address="localhost" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8181" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
- 만약 maxThreads 값이 최대 값인 750을 넘을 경우 두 대의 Tomcat을 이용해 클러스터링 구성을 하는 것이 좋다. 하나의 Tomcat에 maxThreads=1000을 설정하지 말고 두 개의 Tomcat에 각각 maxThreads=500 설정을 하라는 뜻이다.
Tip!
잘 모르겠으면 대충 설정하지 말고 Tomcat을 기본값으로 운영하면서 숫자를 조금씩 조정.
4. Compression
- 특정 mime-type 에 대해 데이터 압축하여 전송 가능
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8181" compression="500" compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />
- compression="500"은 500 bytes 이상의 파일만 압축하라는 뜻
- 모두 압축하려면 compression="on"으로 설정
HTTP compression
서버에서 파일을 압축한 뒤 클라이언트로 전송하는 기능임. Tomcat의 고유한 기능이 아니라 HTTP 스펙에 있는 기능임.
5. DB 성능 튜닝
- NamedQuery 의 경우 애플리케이션 초기화할 때 모두 로드할 것.
JDBC에서 try - catch - finally 사용, 반드시 DB connection close!!.
6. Tomcat Native Library
- Apache Portable Runtime(APR)이라는 게 있는데 이게 성능 향상이 많은 도움을 줌.
참고 : http://tomcat.apache.org/native-doc/
필수 라이브러리 : http://tomcat.apache.org/tomcat-6.0-doc/apr.html
APR 1.2+ development headers (libapr1-dev package)
OpenSSL 0.9.7+ development headers (libssl-dev package)
JNI headers from Java compatible JDK 1.4+
GNU development environment (gcc, make)
7. 기타
- 웹 브라우저 캐시 사용함으로 설정할 것.
- 서버 재시작시 반드시 자동으로 Tomcat이 재시작 되도록 설정할 것.
- HTTPS가 HTTP에 비해 약간 느리긴 하지만 보안이 중요하다면 HTTPS를 사용할 것.
8. 추천도서
|
|
|
|
단순 톰캣 튜닝이 아니라 전반적인 웹서비스 및 서버 등에 관련하여 볼만한 책들!!
'IT > System Engineering' 카테고리의 다른 글
인텔 CPU 이슈 (멜트다운 버그, 스펙터 버그) (0) | 2018.01.10 |
---|---|
Cockpit : A Beginner Friendly Server Administration Tool (0) | 2015.09.08 |
도메인 라이프 사이클 (0) | 2013.07.31 |
리눅스 파일시스템 체크 (0) | 2013.05.20 |
리눅스 본딩 (0) | 2013.05.14 |
댓글