Sunday, April 7, 2013

mod_jk Thread 설정


yum install httpd httpd-devel

해서 httpd 설치

그다음

cd tomcat-connectors-1.2.35-src
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
make install
하면 mod_jk.so 파일이 httpd의 모듈 디렉토리에 들어감


### Mod_jk : connect tomcat ####

LoadModule jk_module modules/mod_jk.so

JkWorkerProperty worker.list=ajp13w
JkWorkerProperty worker.ajp13w.type=lb
JkWorkerProperty worker.ajp13w.balanced_workers=WAS1,WAS2
JkWorkerProperty worker.sticky_session=true

JkWorkerProperty worker.WAS1.type=ajp13
JkWorkerProperty worker.WAS1.host=localhost
JkWorkerProperty worker.WAS1.port=8009
JkWorkerProperty worker.WAS1.socket_timeout=3
JkWorkerProperty worker.WAS1.prepost_timeout=1000
JkWorkerProperty worker.WAS1.connect_timeout=1000
JkWorkerProperty worker.WAS1.lbfactor=1

JkWorkerProperty worker.WAS2.type=ajp13
JkWorkerProperty worker.WAS2.host=192.168.0.32
JkWorkerProperty worker.WAS2.port=8009
JkWorkerProperty worker.WAS2.socket_timeout=3
JkWorkerProperty worker.WAS2.prepost_timeout=1000
JkWorkerProperty worker.WAS2.connect_timeout=1000
JkWorkerProperty worker.WAS2.lbfactor=1

JkLogFile logs/jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
#JkMount /*.jsp ajp13w
JkMount /* ajp13w
JkMount /example/* ajp13w

JkUnMount /*.html ajp13w
JkUnMount /*.txt ajp13w
JkUnMount /*.gif ajp13w
JkUnMount /*.jpg ajp13w
#JkMount /servlet/* ajp13w



#### 아파치 MPM은 Worker 모델을 사용한다
[root@node1 httpd]# apachectl -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

[root@node1 httpd]# httpd -V
#HTTPD=/usr/sbin/httpd.worker 주석 해제

/etc/sysconfig/httpd

[root@buy-0936 sysconfig]# apachectl -l
Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c


worker.c로 동작

웹서버에서의 AJP connection 개수는 AJP connector의 maxThreads 개수보다 작아야 한다.

AJP connector는 쓰레드가 하나의 connection을 서비스하는 구조이므로, 쓰레드 개수를 넘는 connection은 받아들일 수 없다.
따라서, 웹 서버의 최대 ajp connection 개수를 maxThreads 이상 설정해서는 안된다.


그렇다면 최대 ajp connection 개수는 어떻게 설정될까?
최대 ajp connection 개수 = 최대 프로세스 개수 * connection_pool_size



  최대 프로세스 개수
    Prefork 모델: MaxClients
    Worker 모델: MaxClients / ThreadsPerChild
    NT Thread 모델: 1

  connection_pool_size 기본값
    Prefork 모델: 1
    Worker 모델: ThreadsPerChild
    NT Thread 모델: ThreadsPerChild




reference http://clotho95.blog.me/140047805883

No comments:

Post a Comment