Почему мой пул потоков исполнителя Tomcat 6 не используется соединителем? - PullRequest
2 голосов
/ 04 мая 2010

Мой server.xml выглядит следующим образом:

<!--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 использует исполнителя, хотя ему не дано указаний. Менеджер просто неверно сообщает или я неправильно настроил пул потоков?

Ответы [ 2 ]

6 голосов
/ 04 мая 2010

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

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

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

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

0 голосов
/ 19 января 2017

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

...