Я развернул популярное тестирование веб-приложений под названием TPC-W в трехуровневой конфигурации. У меня есть два физических узла, один из которых работает веб-сервер Apache, а другой - Tomcat + MySQL. Я использую общего исполнителя в Tomcat и пытаюсь понять его поведение. Я использую JMX для мониторинга JVM Tomcat.
Вот мой вопрос. Атрибут completedTaskCount
разделяемого исполнителя Tomcat MBean не обновляется в соответствии с количеством обслуживаемых запросов (фактически он остается неизменным на уровне 0). Я вижу, что под AJP-коннектором в MBean GlobalRequestProcessor подается очень большое количество запросов. Это почему? Не должен completedTaskCount
увеличиваться при обработке запросов.
Единственное возможное объяснение, с которым я могу прийти, это то, что это связано с некоторым поведением в протоколе AJP. Я предположил, что по какой-либо причине каждый процесс Apache подключается к потоку в пуле потоков Tomcat-исполнителя и отправляет все входящие запросы как один запрос к Apache. Даже любой новый входящий запрос отправляется как часть этого запроса. в этом случае поток Tomcat никогда не увидит, как этот запрос от Apache полностью обслуживается. Имеет ли это какой-то смысл?
Любые указатели или помощь по этому вопросу высоко ценится.
Редактировать 1
Tomcat Версия: 7.0.94
Версия Apache: 2.4.38
Это определение соединителя:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" executor="tomcatThreadPool"/>
Вот определение общего исполнителя:
<Executor name="tomcatThreadPool" namePrefix="tpcw-exec-" maxThreads="200" minSpareThreads="25"/>