728x90
반응형
출처 : http://www.javaservice.com/~java/bbs/read.cgi?b=engine&c=r_p&n=1222930198
 
1. 환경 
 - OS : AIX 5.2
 - JDK : 1.4.2
 - RAM : 2G
 - Apache : 2.2.6
 - WAS : Jboss 3.2.8 (Tomcat5)

2. 시스템 구성


3. 설치 (연동 설치 가이드가 많이 있습니다. 검색하여 보시기 바랍니다.)
   참고 사이트 : http://httpd.apache.org/docs/2.2/
   - Apache 설치
   $ tar xvzf httpd-2.2.6.tar
   $ cd httpd-2.2.6
   $ make clean
   $./configure --prefix=/web/apache2 --with-mpm=worker --enable-speling=shared --enable-rewrite=shared --enable-modules=so
   $ make && make install

   - 커넥터 설치 (jk 1.2.26)
   참고 사이트 : http://tomcat.apache.org/connectors-doc/
   $ tar xvzf tomcat-connectors-1.2.26-src.tar
   $ cd tomcat-connectors-1.2.26-src
   For the impatient Apache admins:
   $> cd native
   $> ./configure --with-apxs=/usr/sbin/apxs (or where ever the apxs/apxs2 is)
   $> make
   $> su -c 'make install'
   

   - Jboss3.2.8 
   참고 사이트 http://www.jboss.org/jbossas/downloads/
   압축을 풀어 놓고 사용하시면 됩니다. 톰켓을 사용하셔도 무방합니다.
   jdk5, 6을 사정상 사용하지 못하였을 알려드리며, jdk6 + Tomcat6.x.x를 추천합니다.


4. 파라메타 튜닝
   httpd.conf의 아래 파일들은 주석 해제되어야합니다.
   - httpd-mpm.conf
 
    StartServers         20
    MaxClients           500  최대 사용자
    ThreadsPerChild      25   StartServer * ThreadsPerChild = 20 * 25 = 500
    MinSpareThreads      25
    MaxSpareThreads      500 
    MaxRequestsPerChild  0
 

   - httpd-info.conf , http://yourServerName/server-status로 모니터링가능
     접근제어를 아래와 같이 하실수있습니다.
 
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 160.100.52.1/255.255.255.0 127.0.0.1

  
   - httpd-vhosts.conf 버추얼 호스팅시 만 사용

    ServerAdmin webmaster@cyclerace.or.kr
    DocumentRoot /web/waspage
    ServerName xxx.xxx.xxx.xxx
    ErrorLog "|/web/apache2/bin/rotatelogs /web/apache2/logs/www_error_log.%Y%m 10M"
    CustomLog "|/web/apache2/bin/rotatelogs /web/apache2/logs/www_access_log.%Y%m%d 86400" common env=!IMAGE
    JkMountFile conf/extra/uriworkermap.properties



    ServerAdmin webmaster@cyclerace.or.kr
    DocumentRoot /web/waspage
    ServerName xxx.xxx.xxx.xxx
    ErrorLog "|/web/apache2/bin/rotatelogs /web/apache2/logs/company_error_log.%Y%m 10M"
    CustomLog "|/web/apache2/bin/rotatelogs /web/apache2/logs/company_access.%Y%m%d 86400" common env=!IMAGE
    JkMountFile conf/extra/uriworkermap.properties


   - htttpd-default.conf
  Timeout 10 <- Ddos 공격 대비
  KeepAlive On 
  KeepAliveTimeout 2 or 1 <- 하나의 웹화면에는 gif, jgp, css, js 등의 여러 개 httpd 
                            프로세스 소모되므로 KeepAlive On 옵션과 같이 사용하고 
                            아주 짧게 적용, 모니터링 후 적용 추천


   - mod-jk.conf
   JkLogFile  "|/web/apache2/bin/rotatelogs /web/apache2/logs/mod_jk_log.%Y%m%d 86400"
   JkOptions  +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories


   - workers.properties
   참고사이트 : http://tomcat.apache.org/connectors-doc/reference/workers.html
   worker.list = loadbalancer, status

   worker.node1.port=8009
   worker.node1.maintain=60
   worker.node1.host=xxx.xxx.xxx.xxx
   worker.node1.type=ajp13
   worker.node1.lbfactor=1
   worker.node1.fail_on_status=-404,-500,503,504 

   worker.node2.port=8009
   worker.node2.maintain=60
   worker.node2.host=xxx.xxx.xxx.xxx
   worker.node2.type=ajp13
   worker.node2.lbfactor=1
   worker.node2.fail_on_status=-404,-500,503,504 

   # Load-balancing behaviour
   worker.loadbalancer.type=lb
   worker.loadbalancer.max_reply_timeouts=5000  #<--5초 이상의 요청은 서버의 부하를 고려해 에러(504) 처리한다.
   worker.loadbalancer.balance_workers=node1,node2
   worker.loadbalancer.method=Session
   worker.loadbalancer.sticky_session=1

   worker.status.type=status <-- jkstatus 모니터링용



   - uriworkermap.properties
   
   # 정적(jpg,css,js...)인 요소는 아파치가 동적인 요소만 넘긴다.
   /jkstatus=status
   /*.jsp=loadbalancer
   /waspage/*.do=loadbalancer
   /waspage/*.jsp=loadbalancer


   - httpd.conf 에러처리 화면 구성
    ErrorDocument 403 /waspage/pages/error_404.html
    ErrorDocument 404 /waspage/pages/error_404.html
    ErrorDocument 502 /waspage/pages/error502.html
    ErrorDocument 503 /waspage/pages/error503.html
    ErrorDocument 504 /waspage/pages/error504.html
   
   HTTP Status Codes 
 
   400 400 Bad Request
   401 401 Unauthorized
   402 402 Payment Required
   403 403 Forbidden
   404 404 Not Found
   405 400 Method Not Allowed
   500 500 Internal Server Error 
   501 501 Not Implemented 
   502 502 Bad Gateway 
   503 503 Service Unavailable 
   504 504 Gateway Timeout


   - server.xml
   참고자료 : 버전별 문서 확인 꼭 해야합니다. deprecated 또는 기본값을 꼭꼭꼭...
   Tomcat5 : http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html
   Tomcat6 : http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

   Tomcat 5 의 경우 아래 파라메타는 기본값이 너무 적습니다.
   maxThreads="50" <--- 200
   maxProcessors="20" <---200

   일반적으로 아파치프로세스 수 > 톰캣 스레드 수 > DB Connection 수 조정

   Engine jvmRoute=node1,2 적용 세션 클러스터링은 하지 않았고, jk의 sticky_session 옵션을 사용했습니다.
   물론, L4의 Persistent Hash을 사용했습니다.
  

4. 로깅 및 모니터링
   - 로깅 (성능에 미치는 영향이 큽니다, 날짜별로 로깅 추천합니다, 위 소스 내용중 적용되어있습니다)
     Tomcat의 경우 Tomcat6/conf/logging.properties를 수정하여 에러만 로깅하시고,
     아파치의 경우 
     SetEnvIfNoCase Request_URI "\.(gif|png|jpg|css|js|bmp|jpeg|swf)$" IMAGE 를
     적용하여 동적인 호출만 로깅 가능합니다.
  
   - 모니터링
     아파치 : http://yourServerName/server-status
     JK     : http://yourServerName/jkstatus
     Tomcat : http://yourServerName:8080/manager/html 설정하면 될거 같습니다.






-------------------------------------------------------  
  본 문서는 자유롭게 배포/복사 할 수 있으나 반드시
  이 문서의 저자에 대한 언급을 삭제하시면 안됩니다
 NO_SPAM_yunkidon@hotmail.com 윤기돈 010--5198--6704
=======================================================
728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,