본문 바로가기
개발일기

01. 톰캣

by 김엉배 2024. 1. 2.
728x90
반응형

 

 

문득,  업무 중 수도 없이 하는 구글링 수많은 블로그를 보면서 이해하고 개발하는 과정이 수도 없이 많은데 머릿속에서만 정리하고 끝나는 게 너무 아깝다는 생각이 들어 짧게라도 매일 꾸준하게 회사 일이든 개인 업무든 기록을 남기기로 다짐을 했다.


 

2024.01. 02 (화)

 

노트북으로 PC를 바꾸게 되어 개발환경을 다시 세팅을 하게 되었다.

기존 툴을 이클립스만 쓰다가 인텔리제이를 써봐야겠다고 생각하고 세팅을 시작했다.

 

톰캣 서버를 사용하는데 server.xml 에서 설정하고 사용했는데, 인텔리제이에서는 파일이 없어 여기서부터 버벅거렸다.

 

인텔리제이의 경우 {TOMCAT_HOME}의 설정값을 참조하고 있어 Tomcat의 수정이 필요한 경우의 tomcat home에 위치해 있는 conf/server.xml을 직접 수정해서 사용해야 톰캣 설정이 변경된다는 걸 구글링 통해 알았다.

 

톰캣 설정을 시작으로 톰캣에 대해 간략하게 짚고 넘어가야겠다 생각하면 정리했다.

 

 

의의

톰캣(Tomcat)은 아파치재단에서 제공하는 오픈소스 웹 애플리케이션 서버(WAS)이며,

선 마이크로시스템즈의 소프트웨어 설계자인 제임스 덩컨 데이비슨에 의한 서블릿 참조 구현으로 출발했으며,

정식 명칭은 아파치 톰캣(Apache Tomcat)이다. 톰캣(Tomcat)이란 수고양이를 의미.

 

여러 가지 특징과 역할이 있지만, 주요 기능과 특징

  1. 서블릿 컨테이너: 톰캣은 자바 서블릿 및 JSP와 같은 Java 웹 컴포넌트를 실행하는 데 사용되는 서블릿 컨테이너의 역할을 하며,
                              서블릿 컨테이너는 웹 애플리케이션을 실행하고 관리하는 데 사용되는 컴포넌트
  2. 자체 웹 서버: 톰캣은 자체적으로 기본적인 웹 서버 기능을 포함하고 있다.
                         단독으로 사용될 수도 있고, 아파치 HTTP 서버와 연동하여 사용될 수도 있다.
  3. JSP 지원: JavaServer Pages(JSP)는 동적 웹 페이지를 만들기 위한 기술 중 하나로,
                     톰캣은 JSP를 지원하여 동적인 콘텐츠를 생성할 수 있게 해 준다.
  4. 웹 애플리케이션 배포: 톰캣은 간단한 설정을 통해 웹 애플리케이션을 쉽게 배포하고 관리할 수 있는 기능을 제공.
  5. 클러스터링 지원: 톰캣은 여러 서버 인스턴스를 클러스터로 묶어 고가용성 및 부하 분산을 구현할 수 있도록 지원.
  6. SSL 및 보안 기능: 톰캣은 SSL을 통한 암호화와 같은 보안 기능을 제공하여 웹 애플리케이션의 안전성을 높일 수 있다.
  7. 다양한 확장성: 플러그인을 통해 다양한 기능을 추가할 수 있으며, 사용자 정의된 설정을 통해 확장성을 지원.

톰캣은 가벼운 웹 애플리케이션 서버로 널리 사용되며, Java 웹 애플리케이션 개발에서 중요한 역할을 담당하고 있다.

Apache Tomcat Java 옵션 설정

  • 필수 설정

 

 

  • VisualVM 또는 JConsole에 대한 JMX 모니터링을 활성화하는 선택적 설정

 

 

추가

- 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의 최소 크기값을 지정하는 부분입니다.

   Java Heap Size는 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx옵션으로 지정한 크기만큼 증가합니다.
- Xmx <size>

 : Java Heap의 최대 크기값을 지정하는 부분입니다.

   -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx옵션으로 지정한 크기만큼 증가합니다.


   Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장하고 있으며,

        크기의 동적인 변경에 의한 오버 헤드를 최소화하기 위해서입니다.

- XX:NewSize=<Value>

 : New Generation의 시작 크기를 지정값입니다.
- XX:MaxNewSize=<value>

 : New Generation의 최대 크기를 지정값입니다.
   New Generation의 크기는 NewSize옵션값과 MaxNewSize옵션값에 의해 결정됩니다
 
- XX:PermSize=<size>

 : Permanent Generation의 최초 크기를 지정하는 값입니다.


- XX:MaxPermSize=<size>

 : Permanent Generation의 최대 크기를 지정하는 값입니다.
  많은 수의 Class를 사용하는 Application들은 Permanent Generation의 크기가 작을 경우

      Out of Memory Error가 발생하며 Class를 로딩하지 못하거나

      사용 중 다운되는 경우 때문에 초기 Permanent Generation의 값을 메모리에 여유가 있다면 넉넉하게 주는 것이 좋습니다.
 
- XX:NewRatio=<value>

 : New Generation과 Old Generation의 비율을 결정합니다.
 
- XX:SurvivorRatio=<value>

 : Survivor Space와 Eden Space의 비율을 지정하는 값입니다. 만일 이 값이 6이면, To Survivor Ratio:From Survivor Ratio:Eden     Space = 1:1:6 이 됩니다. 즉, 하나의 Survivor Space의 크기가 New 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.preferIPv4 Stack

 : IPv4인식하기 위해 사용합니다.

- Djava.awt.headless

 : 비윈도우 환경에서 GUI 클래스를 사용할 수 있게 하는 옵션입니다.

출처: https://soul.tistory.com/63 [▒ 생각한 대로 살지 않으면 살아온 대로 생각하게 될 것이다. ▒:티스토리]

 

 

728x90
반응형

'개발일기' 카테고리의 다른 글

06. 자바(Java) 이미지 파일  (60) 2024.01.22
05. JSP(JavaServer Pages)  (49) 2024.01.17
04. 자바스크립트 eval() 함수  (35) 2024.01.11
03. 빌드(build)  (36) 2024.01.08
02. 이클립스(Eclipse) VS STS(Spring tool Suite)  (27) 2024.01.03