2012-03-08 10 views
2

Tomcat은 과부하시 다른 작업자를 사용하도록 mod_jk의로드 밸런서에 알릴 수 있습니까? 그렇다면 어떻게?Tomcat은 과부하되었을 때 다른 작업자를 사용하도록 mod_jk의로드 밸런서에게 말할 수 있습니까? 그렇다면 어떻게?

필자는 멀티 테넌트 응용 프로그램의 지속성 계층에 Kodo JDO를 사용하며 메모리 사용량의 큰 요소는 데이터베이스 당로드되는 스키마 정보입니다. 내 응용 프로그램을 사용하는 모든 조직에는 자체 데이터베이스가 있습니다. 응용 프로그램은 클러스터링 또는 세션 직렬화를 지원하지 않습니다. 그것들을 지원하기 위해 그것을 개조하는 것이이 프로젝트의 범위를 벗어난다.

가비지 컬렉터가 질식하지 못하도록 Tomcat의 각 인스턴스는 4GB의 힙으로 제한됩니다. Tomcat의 단일 인스턴스는 모든 조직에 필요한 모든 데이터베이스의 스키마를로드하기에 충분한 메모리를 가지고 있지 않습니다.

일반적으로 Tomcat의로드 균형 조정은 세션별로 수행됩니다. 세션에 따라 균형을 조정하면 메모리가 보유 할 수있는 것보다 더 많은 스키마를로드하는 인스턴스 하나가 생길 수 있으며 GC 오버 헤드 한도에서 끝나는 속도가 느리고 고통스런 죽음을 맞이하게됩니다.

현재 해결 방법은 별개의 호스트 이름을 사용하여 명시 적으로 분리 된 인스턴스를 여러 개 사용하는 것입니다. 각 조직에는 이러한 호스트 이름 중 하나에 대한 액세스 권한이 부여됩니다.

하나의 옵션은 "full"Tomcat이 사용자에게 서비스 할 수 없다는 신호를 보내는 것입니다.

과부하되었을 때 Tomcat이 mod_jk의로드 밸런서에게 다른 작업자를 사용하도록 말할 수 있습니까? 그렇다면 어떻게?

답변

1

흥미로운 질문 (+1). 대답을 찾으면 패스 해주세요 :)

내가 이것을하는 유일한 방법은로드 밸런서를 이용하는 것입니다.

부하 분산 장치를 사용하는 또 다른 멋진 기능은 http 상태 검사를 설정할 수 있다는 것입니다. 따라서 모든 인스턴스가 응답을 중지하면 다음 정상적인 서버로 이동합니다.