2010-05-03 2 views
2

Мой server.xml выглядит следующим образом:Почему мой пул потоков исполнителей Tomcat 6 не используется соединителем?

<!--The connectors can use a shared executor, you can define one or more named thread pools--> 
<Executor name="tomcatThreadPool" 
      namePrefix="catalina-exec-" 
      maxThreads="200" 
      minSpareThreads="4"/> 

<Connector executor="tomcatThreadPool" 
      port="8080" protocol="HTTP/1.1" 
      connectionTimeout="10000" 
      maxKeepAliveRequests="1" 
      redirectPort="8443" /> 

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

Однако в менеджере Tomcat (http://localhost/manager/status) он показывает на следующие

http-8080: Max threads: -1 Current thread count: -1 Current thread busy: -1 
jk-8009: Max threads: 200 Current thread count: 4 Current thread busy: 1 

По какой-то причине он выглядит как HTTP-8080 не используя исполнителя, даже если он тоже направлен, а jk-8009 использует исполнителя, даже если он не проинструктирован. Является ли диспетчер просто неверным или неправильно настроил пул потоков?

ответ

5

Я предполагаю, что менеджер сообщает значения, которые были установлены как часть разметки соединителя, и не сообщают значения от исполнителя. Исполнитель работает так, как ожидалось, он просто не сообщается правильно в менеджере.

Значение 200 для разъема AJP вводит в заблуждение, так как 200 является значением по умолчанию для maxThreads (как определено here); потому что вы не указали maxThreads для соединителя AJP, это значение, которое используется.

HTTP-коннектор сообщает о бессмысленных значениях, поскольку он делегирует управление потоками исполнителю.

Чтобы проверить, правда ли это, попробуйте изменить значение значения maxThreads исполнителя на другое значение. Вы должны увидеть maxThreads разъема AJP, стоящего на уровне 200 (потому что это его значение по умолчанию).

+0

Похоже, вы правы. Спасибо за помощь – jwegan

0

Максимальное количество потоков обработки запросов, которые должны быть созданы этим Коннектором, что определяет максимальное количество одновременных запросов, которые могут быть обработаны. Если не указано, этот атрибут установлен в 200. Если исполнитель связан с этим соединителем, этот атрибут игнорируется, поскольку соединитель выполняет задачи с использованием исполнителя, а не пула внутренних потоков. Обратите внимание: если исполнитель настроен, любое значение, установленное для этого атрибута, будет записано правильно, но будет сообщено (например, через JMX) как -1, чтобы было ясно, что он не используется.