darait
[Tomcat]총정리 본문
Tomcat 정리
<주요 Directory>
lib - Tomcat Engine이 사용하는 외부라이브러리 Directory (.jar)
bin - Tomcat을 Run 하는 명령 스크립트 Directory
conf - Tomcat web service를 위한 설정 파일 Directory
logs - log file Directory
temp - Tomcat Engine에서 사용하는 임시 파일 Directory
webapps - Web application 이 전개되는 Directory
work - JSP file이 servlet으로 컴파일된 Directory
* Tomcat Engine은 lib, bin 만 사용한다. 나머지는 실제 service를 실행한다.
* Instance = 하나의 JVM
§ CATALINA_HOME - Tomcat Engine 디렉토리
§ CATALINA_BASE - 인스턴스 홈 디렉토리
§ CATALINA_TMPDIR - 인스턴스가 사용하는 임시 디렉토리
§ JAVA_HOME - 자바 홈 디렉토리
§ CLASSPATH - 클래스 패스 설정 정보
<Apache java 설정>
-Dcatalina.base=C:\Tomcat 6.0\app\acstudy
CATALINA_BASE 는 Tomcat 인스턴스의 설정과 웹애플리케이션의 루트(Root) 디렉토리를 정의 합니다. CATALINA_BASE 가 Tomcat 인스턴스에 대한 환경변수이기 때문에 Tomcat 인스턴스 디렉토리인 conf, logs, temp, work, webapps 에 대한 디렉토리를 정의하는 것과 같습니다. 이는 다시 말해서 Tomcat 에서 실행시킬 자바 웹 소프트웨어의 루트 디렉토리를 지정하는 것이다라고 말 수 있습니다.
그렇다면 CTALINA_BASE 를 다르게하면 하나의 Tomcat 엔진에서 여러개의 인스턴스를 구동할 수 있다는 것이 됩니다.
-Dcatalina.home=C:\Tomcat 6.0\
실제 tomcat 이 구동되는 곳
-Djava.endorsed.dirs=C:\Tomcat 6.0\\endorsed
JDK 자체에 포함된 것이 아닌 설치한 라이브러리의 것을 로딩할때 사용하는 매커니즘이 바 로 endorsed이다. "java.endorsed.dirs"라는 시스템 파라매터를 설정하면 된다. 다음과 같이 java를 실행할 때 jaxp-api.jar가 있는 디렉토리를 설정해 주면 된다.
-Djava.io.tmpdir=C:\Tomcat 6.0\app\acstudy\temp
그냥 비어있는 파일을 사용하기 위해서 지정?
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
로그 정보를 쌓게 하기 위해서 설정
-Djava.util.logging.config.file=C:\Tomcat 6.0\app\acstudy\conf\logging.properties
로그 환경 설정
-XX:PermSize=256m
가상 머신의 최초의 크기를 지정한다.
-XX:MaxPermSize=256m
가상 머신의 최고의 크기를 지정한다.
-Xloggc:C:\Tomcat 6.0\app\acstudy\gclogs\acstudyr_gc.log
GC로그가 쌓이는 곳, Garbage Collection 쓰레기값 저장
-verbose:gc -XX:+PrintGCDetails(상세시간)
-XX:+PrintGCTimeStamps(발생시간)
-verbose:gc은 쓰레기값 모니터링 하는 것
* 참고 : JVM 메모리 옵션
-server : Server HotSpot JVM을 사용한다. Server HotSpot JVM은 Desktop용 Appkication을 구동하는데 유리하다. 성능 최적화(Optimization)에 필요한 모든 과정을 최대한으로 수행한다. Application의 시작시간은 느리지만, 일정 시간이 흐르면 Client HotSpot JVM에 비해 훨씬 뛰어난 성능을 보장한다. (참고) Jdk 1.5부터는 Server-Class머신인 경우에는 -server 옵션이 기본적용된다. Server-Class머신이란 2장 이상의 CPU와 2G이상의 메모리를 갖춘 머신을 의미한다.
-Xms<size> : Java Heap의 최초 크기(Start Size)를 지정한다. Java Heap은 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx옵션으로 지정한 크기만큼 커진다. Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장한다. 크기의 동적인 변경에 의한 오버 헤들를 최소화하기 위해서이다.
-Xmx<size> : Java Heap의 최eo 크기(Maximum Size)를 지정한다. -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx옵션으로 지정한 크기만큼 커진다. Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장한다. 크기의 동적인 변경에 의한 오버 헤들를 최소화하기 위해서이다.
-XX:NewSize=<Value> : Young Generation의 시작 크기를 지정한다. Young Generation의 크기는 NewSize옵션(시작크기)과 MaxNewSize옵션(최대크기)에 의해 결정된다
-XX:MaxNewSize=<value> : Young Generation의 최대 크기를 지정한다. Young Generation의 크기는 NewSize옵션(시작크기)과 MaxNewSize옵션(최대크기)에 의해 결정된다
-XX:PermSize=<size> : Permanent Generation의 최초 크기를 지정한다. Permanent Generation의 최대 크기는 MaxPermSize옵션에 의해 지정된다. 많은 수의 Class를 로딩하는 Application은 크기의 Permanent Generation을 필요로 하며, Permanent Generation의 크기가 작아서 Class를 로딩하지 못하면 Out of Memory Error가 발생한다.
-XX:MaxPermSize=<size> : Permanent Generation의 최대 크기를 지정한다. Permanent Generation의 시작 크기는 PermSize옵션에 의해 지정된다. 많은 수의 Class를 로딩하는 Application은 PermSize와 MaxPermSize옵션을 이용해 Permanent Generation의 크기를 크게 해주는 것이 좋다. Permanent Generation의 크기가 작을 경우에는 Out of Memory Error가 발생한다.
-XX:NewRatio=<value> : Young Generation과 Old Generation의 비율을 결정한다. 예를 들어 이 값이 2이면 Yong:Old = 1:2가 되고, Young Generation의 크기는 전체 Java heap의 1/3이 된다.
-XX:SurvivorRatio=<value> : Survivor Space와 Eden Space의 비율ㅇ르 지정한다. 만일 이 값이 6이면, To Survivor Ratio:From Survivor Ratio:Eden Space = 1:1:6 이 된다 즉, 하나의 Survivor Space의 크기가 Young Generation의 1/8 이 된다. Survivor Space의 크기가 크면 Tenured Generation으로 옮겨가기 전의 중간 버퍼 영역이 커지는 셈이다. 따라서 Full GC의 빈도를 줄이는 역할을 할 수 있다. 반면 Eden Space의 크기가 줄어들므로 Mirror GC가 자주 발생하게 된다.
-XX:ReservedCodeCacheSize=<value> : Code Cache의 최대 사이즈의 크기(byte) 설정
-XX:+DisableExplicitGC : System.gc 호출에 의한 Explicit GC를 비활성화한다. RMI에 의한 Explicit GC나 Applicaton에서의 Explicit GC를 원천적으로 방지하고자 할 경우에 사용된다.
-XX:+UseConcMarkSweepGC : CMS Collector를 사용할 지의 여부를 지정한다. GC Pause에 의한 사용자 응답 시간 저하 현상을 줄이고자 할 경우에 사용이 권장된다.
-XX:+AggressiveOpts : 최신 HotSpot VM 성능을 최적화
-Djava.net.preferIPv4Stack : IPv4인식하도록 만들기 위해
-Djava.awt.headless : 비윈도우 환경에서 GUI 클래스를 사용할 수 있게 하는 옵션
<Instance Root Directory에 server.xml 설정법>
Host 태그
1. appBase = "war를 배포할 위치를 설정"
2. unpackWARs = "true"는 war를 풀겠다.
3. autoDeploy = "true"는 배포하겠다.
Context 태그
1. port가 붙을 이름을 설정
2. docBase는 war를 배포할 file이s름을 지정하여 생성한다.
3. 세부사항 정리
- <Server port="8005" shutdown="SHUTDOWN"> : apache를 Tomcat을 켜주는 설정
- Listener 태그는 Apache의 lib를 듣는 것
<Tomcat과 Apache의 차이>
- 톰캣 :
JSP를 서블릿으로 바꿔주고(jsp를 컴파일해서 처리한 결과를 web 서버로 보낸다.) 이를 실행시켜주는 역할. (포트 : 8080)
- 아파치 :
웹 서버로서 사용자의 요청을 받아 처리를 한다. 아파치가 jsp/서블릿으로 요청 받았을 때, 이를 톰캣으로 넘겨준다. 아파치는 jsp 처리를 못한다. 그래서 톰캣에서 처리하고 다시 아파치로 넘겨주는 그런 작업을 한다. (포트 : 80)
- Web application : jsp 등등 브라우져 서비스
'IT > tomcat' 카테고리의 다른 글
[Tomcat]Server.xml 정리 (0) | 2017.04.12 |
---|