IT

'소프트웨어/WS/WAS'에 해당되는 글 10건

  1. 2014.06.09 APR, AJP
  2. 2013.08.26 java.lang.IllegalArgumentException: Document base 에러 해결법
  3. 2013.08.12 세션 클러스터링
  4. 2013.08.08 톰캣 성능 튜닝
  5. 2013.08.08 톰캣7을 통한 war 디플로이

APR, AJP

2014. 6. 9. 17:48 : 소프트웨어/WS/WAS

AJP는 웹서버 뒤에 있는 어플리케이션 서버로부터 웹서버로 들어오늘 요청을 위임할 수 있는 바이너리 프로토콜이다.

웹 개발자들은 대체로 AJP를 여러 웹서버로 부터 여러개 어플리케이션 서버로의 로드 밸런스 구현에 이용한다

 

Apache Portable Runtime(APR)

- Native 모듈을 사용해 성능을 높이고자 할 경우 사용

 

ws-was 연동 및 이중화 시 AJP 포트 사용

 

Posted by sinpk

심각: Error starting static Resources

java.lang.IllegalArgumentException: Document base /home/pay/apache-tomcat-7.0.42/webapps_test does not exist or is not a readable directory


  • tomcat_home/conf/Catalina/localhost/ 경로에 보면 xml파일이 있는데 이 중에서 에러메시지에 나온 디렉토리를 설정해놓은 xml파일을 삭제 하면 된다.


'소프트웨어 > WS/WAS' 카테고리의 다른 글

APR, AJP  (0) 2014.06.09
세션 클러스터링  (0) 2013.08.12
톰캣 성능 튜닝  (0) 2013.08.08
톰캣7을 통한 war 디플로이  (0) 2013.08.08
톰캣에서 날짜별 로그로 설정하는방법  (0) 2013.07.26
Posted by sinpk


세션 클러스터링은 WAS가 2대 이상 설치되어 있을 경우 동일한 세션으로 세션관리 하는 것을 의미합니다. 예를 들면 L4 스위치를 통해 2대 이상의 WAS가 연결되어 있을 경우 일반적으로는 사용자는 접속했던 WAS로 L4 스위치가 접속을 유도해주지만 하나의 WAS에서 허용된 동접수를 초과한 접속이 발생할 경우 다른쪽으로의 접속을 유도해주게 됩니다 그럴 경우 기존 WAS의 세션이 아닌 새로이 접속된 WAS로 세션이 이루어지고 그럴 경우 세션에 대한 처리 불일치가 발생하죠..그래서 각 WAS에 대한 세션을 하나의 세션으로 관리하게 함으로써 설사 사용자가 기존에 접속했던 WAS가 아닌 새로운 WAS로 접속하더라도 세션은 하나로 관리되기땜에 세션에 대한 불일치가 발생하질 않습니다.

 

Posted by sinpk

1. JVM heap 메모리 크기 변경

- $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의 기본 heap 메모리 사이즈는 64MB 이므로 최소한 -server, -Xms, -Xmx 옵션은 설정해야 한다.

(*) JVM 옵션 목록: http://blogs.sun.com/watt/resource/jvm-options-list.html

(*) Blog2Book, 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기 추천함.




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 설정을 하라는 뜻이다.

(*) 잘 모르겠으면 대충 설정하지 말고 Tomcat을 기본값으로 운영하면서 숫자를 조금씩 조정해야 함.




4. 압축

- 특정 mime-type에 대해 데이터를 압축하여 전송할 수 있다.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 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. 데이터베이스 성능 튜닝

- NamedQuery를 쓴다면 애플리케이션 초기화할 때 모두 로드할 것.

(*) JDBC를 사용한다면 try...catch...finally를 사용하여 반드시 DB connection을 close 할 것.




6. Tomcat Native Library

- Apache Portable Runtime(APR)이라는 게 있는데 이게 성능 향상이 많은 도움을 줌.

- 설치방법: http://www.techbrainwave.com/?p=1017(영어)

(*) 설치방법: Tomcat Native Library – Apache Portable Runtime(APR) 설치(한글)

(*) 굳이 Apache httpd와 연동할 필요가 없는 이유임.

(*) 진실 혹은 거짓: Tomcat과 Apache httpd를 연동하는게 항상 성능을 향상시키는가?




7. 기타

- 웹 브라우저 캐시 사용함으로 설정할 것.

- 서버 재시작시 반드시 자동으로 Tomcat이 재시작 되도록 설정할 것.

- HTTPS가 HTTP에 비해 약간 느리긴 하지만 보안이 중요하다면 HTTPS를 사용할 것

Posted by sinpk

웹 프로그래밍을 끝내고 나면, web server에 디플로이를 해야하는데, 여기서는 사람들이 가장 많이 쓰고, 대중적으로 사용하고 있는 tomcat 그중에서 버전 7에 어떻게 디플로이하는가를 설명하도록 한다

 

 

1. 먼저 tomcat 7을 다운로드 받는다.

http://tomcat.apache.org/download-70.cgi 에서 본인의 PC에 맞는 tomcat을 다운로드 받는다.

 

2. 톰캣은 설치용 프로그램이 아니기 때문에(windows register와 상관없다는 뜻), 특정한 directory에 다운로드 받은 zip파일 압축을 푼다 (예를 들어 나는 D:\server\apache-tomcat-7.0.37-windows-x64)에 압축해제를 했다.

 

3. bin 디렉토리에 있는 startup.bat파일을 통하여 톰캣을 실행시킨다. (windows => cmd 를 통해서 실행시키자.)

만약 jdk나 jre 파일을 찾을수 없다는 메시지가 나오면, 환경변수에 다음과 같이 추가한다.

 

변수이름 : CATALINA_HOME

변수 값 : D:\server\apache-tomcat-7.0.37-windows-x64\apache-tomcat-7.0.37 (본인이 설정한 디렉토리)

 

변수이름 : JAVA_HOME

변수 값 : C:\Program Files\Java\jdk1.7.0_13 (본인이 설정한 디렉토리)

 

4. startup.bat 파일을 통해 톰캣 실행이 정상적으로 된다면, 

localhost:8080 을 익스플로러(크롬, 파이어폭스 등등)를 통하여 실행시킨다. 

Apache 톰캣 화면이 나오면 성공이다. (apache_home.png)

 

5. manager 화면을 활성화 한다.

D:\server\apache-tomcat-7.0.37-windows-x64\apache-tomcat-7.0.37\conf\tomcat-user.xml 을 편집한다.

 

<role rolename="manager-gui" />

<user username="admin" password="admin" roles="manager-gui" /> 

 

를 추가한다.

 

6. 아래와 같이 설정후 톰캣 서버를 재시작하면 

locathost:8080/manager로 접근이 가능하다.

 

7. manager화면에서 war파일을 WAR file to deploy 를 통해서 디플로이 해주면 끝...

 

p.s Application의 path 쪽을 보면 여러개를 디플로이 할수 있는데, 그땐 localhost:8080/path 해주면 본인이 개발한 웹서버를 확인할 수 있다.

 

Posted by sinpk