2011-10-17 2 views
1

스레드 관련 Tomcat의 Mbean은 Catalina.ThreadPool 아래에 있습니다.Tomcat 스레드 모니터링 Mbean 설명

다른 속성 즉, maxThreads, currentThreadCount, currentThreadsBusy 등

그래서, 스레드를 제공 할 것입니다 이 속성의 각각 나타내는 무엇, 내 모니터링 자동화 코드에이를 포함시킬 필요가 이들하여 MBean 속성의 설명을 얻을 수있는 곳 활용 통계.

소스 코드를보고 싶습니다. 어디에서 얻을 수 있습니까?

(jconsole을 통해) mbean 클래스 이름을 볼 때 org.apache.tomcat.util.modeler.BaseModelMBean으로 표시되지만 BaseModelMBean의 소스 코드를 살펴보면 필드 나 데이터 멤버가 없음을 알 수 있습니다. 이 속성은 위에서 언급 한 클래스 또는 구현 된 인터페이스의 일부입니다.

그러면 Mbean의 구현이 여기에 표시됩니까 ??

답변

0

당신은 JIoEndpoint에 getCurrentThreadCount(), getCurrentThreadsBusy()와 maxThreads에 대해 읽을 수 있습니다 Javadoc 또는 Source

1

maxThreads을 currentThreadCount는 currentThreadsBusy JMX 속성은 톰캣 커넥터가 들어오는 요청을 처리하기 위해 사용하는 스레드 풀에 관련 . 일반적으로 응용 프로그램 스레드 목록에 http-nio-[port-number]-exec-[sequence-number]이라는 스레드가 있습니다. 요청이 커넥터에 도착하면 후자는 스레드 풀을 통해 특정 스레드를 할당하고 요청이 처리 될 때까지이 스레드를 "사용 중"으로 할당합니다. 따라서 currentThreadsBusy은 현재 처리중인 요청 수를 반영합니다.

maxThreads은 어떤 경우에도 초과하지 않으려는 스레드 수를 정의합니다. currentThreadsBusy 카운터가 maxThreads 임계 값에 도달하면 더 이상 요청을 처리 할 수 ​​없으며 응용 프로그램이 멈 춥니 다.

currentThreadCount는 경우, 스레드의 양 스레드 풀 지금, 바쁜 무료 모두, 스레드 풀은 maxThreads까지, 그들은 일정 시간 동안 사용하지 않는 경우 일부 스레드를 종료하거나 새로 만들 것이다있다을 나타냅니다 수요가있다, 아래 세부 정보를 참조하십시오.

"Under the hood", Tomcat 7부터는 스레드 관리를 담당하는 것이 특히 org.apache.tomcat.util.net.AbstractEndpoint입니다. java.util.concurrent.ThreadPoolExecutor을 스레드 풀 (기본 선택)로 사용하는 경우 maxThreads는 ThreadPoolExecutor의 maximumPoolSize, currentThreadsBusy - activeCount 및 currentThreadCount - poolSize에 매핑됩니다.

currentThreadsBusy 웹 응용 프로그램의 건강 모니터링을위한 최선의 선택이라고 말했다 가졌어요. maxThreads는 정적 값에 가깝습니다 (동적으로 변경하지 않는 이상). currentThreadCount 은 일정 시간 동안 도움이되는 정보를 전달합니다.