보통 일반 서버에 아파치, 톰캣 1 이렇게 띄워서 실행한다.
내가 테스트를 해보니, cpu 갯수만큼 톰캣을 띄우는 것이 가장 최적화되었다고 생각한다. (ppt 만들어서 보고까지 했음..)

그렇지만 굳이 성능뿐 아니라 톰캣의 비정상적 종료에 대해서 해결이 가능하다는 것이다.

톰캣 하나가 비정상적인 종료를 할 때, worker 설정으로 다른 서버를 보게 하는 설정보다는 같이 띄워져 있는 서버를 보게 하는 것이 해놓았다.


vi /usr/local/apache/conf/workers.properties
# worker list
worker.list=tomcat
# Tomcat Load Balancer
worker.tomcat.type=lb
worker.tomcat.balance_workers=tomcat8009,tomcat8010
# 8009 Tomcat
worker.tomcat8009.type=ajp13
worker.tomcat8009.port=8009
worker.tomcat8009.lbfactor=1
worker.tomcat8009.socket_timeout=5
# 8010 Tomcat
worker.tomcat8010.type=ajp13
worker.tomcat8010.port=8010
worker.tomcat8010.lbfactor=1
worker.tomcat8010.socket_timeout=5

timeout 처리가 되어 있어 5초동안 응답이 없으면, 해당 톰캣을 빼도록 되어 있다.
잠깐이지만, 서버가 alive 상태로 있게 하고, 그 문제를 빨리 모니터링 서버에서 캐취해서 어드민 담당자에게 처리 할 수 있도록 하는 것이다..
사실 유지보수 차원에서도 이게 좀 편하다.. 프로젝트만 200개, 서버만 1000대 관리하는데...

worker설정에 다른 서버 ip 적어서 관리하는 것은 상상할 수 없다. 시스템 설정은 최대한 단순하게.. 그리고 배포가능하고 문제를 빨리 파악하게 하는 것이 좋다..

개인적으로 worker를 가지고 다른 ip를 보도록 하는 것은 유지보수 특성상 좋지 않아 보인다고 생각한다. 톰캣을 하나 더 올리는 것이 낫다.


톰캣이 2개여서 좋은 이유는 바로 이 것 같습니다. 바로 톰캣 하나가 비정상적인 종료를 하더라도 하나가 바쳐줄 수 있다라는 것입니다.

Cpu 개수(표준 서버 cpu 2)에 맞춰서 tomcat 인스턴스를 늘이는 것이 부하를 줄이는 부분과  load balancing을 하는 부분에서 탁월하다는 것이 제 생각입니다.




Posted by '김용환'
,