Измерение количества запросов в очереди для tomcat - PullRequest
13 голосов
/ 22 марта 2011

Таким образом, с tomcat вы можете установить значение acceptCount (по умолчанию 100), что означает, что когда все рабочие потоки заняты - новые соединения помещаются в очередь (до тех пор, пока она не заполнится, после чего они будут отклонены).

Я хотел бы отслеживать размер элементов в этой очереди, но не могу работать, если есть способ добиться этого через JMX (то есть, не то, какой максимальный размер очереди - то естьпросто конфиг, но каково текущее количество элементов в очереди).

Любые идеи приветствуются.

Конфигурация для tomcat: http://tomcat.apache.org/tomcat-6.0-doc/config/http.html (поиск по запросу "acceptCount")

Ответы [ 2 ]

7 голосов
/ 22 марта 2011

Этот поток в списке рассылки и ответ Чарльза предполагают, что такого JMX не существует.

Цитата из Чака: «Обратите внимание, что очередь приема не видна Tomcat, так как он поддерживается комм стек ОС. "

Цитата из Дэвида: "К сожалению, так как Tomcat ничего не знает о запросы в очереди приема, .... "

Нет ли способа получить эту информацию (Сколько запросов в принять очередь?) нет?

Нет, очередь на прием полностью невидимый. Только стек связи знает ничего про это и нет API, о которых я знаю, чтобы поставить в очередь содержание - потому что содержание не имеет было получено, только соединение запрос.

В зависимости от вашей реальной проблемы (т. Е. Для измерения запросов в очереди приема, которые Tomcat еще не начал обрабатывать), если вы ищете «решение для регулирования», см. Это продолжение в том же потоке .

3 голосов
/ 03 ноября 2016

Очередь приема не может отслеживаться, но вы можете получить количество запросов в очереди для tomcat, используя Исполнитель .

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="20" minSpareThreads="10" maxQueueSize="30" />
<Connector port="8080" protocol="HTTP/1.1" executor="tomcatThreadPool" connectionTimeout="20000" redirectPort="8443" maxConnections="50" />

Конфигурация maxThreads = "20" означает, что в пуле потоков максимум 20 рабочих, и может одновременно обрабатывать 20 запросов.

maxQueueSize = "30" означает, что в пуле потоков может находиться не более 30 необработанных запросов.Таким образом, вы можете отслеживать атрибут queueSize через JMX, чтобы получить количество запросов в очереди.

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

При установке maxConnections = "50" , tomcat может приниматьбольше запросов, чем maxThreads (20).В приведенном выше примере пул потоков Executor может обработать 20 запросов, дополнительные 30 запросов будут храниться в очереди пулов потоков, любые дальнейшие запросы будут находиться в очереди в очереди приема.

Так что теперь вы можете отслеживать количествозапросы в очереди в пуле потоков с использованием MBean 'Catalina: type = Executor, name = tomcatThreadPool' и именем атрибута 'queueSize'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...