Проблемы с Tomcat 7 Maxthreads

Я установил maxThreads как 32, но в моих журналах я вижу намного больше, чем фактическое количество.

<Connector port = "8080"
                   protocol = "HTTP/1.1"
                   maxThreads = "32" connectionTimeout = "20000" redirectPort = "8443"
                   compression = "on"
                   compressionMinSize = "512"
                   compressableMimeType = "application/json"
        /> 

Журналы:

24 Oct 2018 13:27:15,378 [INFO,XXX,http-apr-8080-exec-172]

Значит ли это, что это нить 172? Я думал, что пул потоков будет ограничен 32, поскольку я дал maxThreads. И у меня тоже нет специального исполнителя

Это идентификатор потока, но из этого не следует, что все 172 идентификатора используются для активных потоков. Я рекомендую вам выполнить профилирование, чтобы вы могли точно знать, сколько потоков активно в пуле.

Alfabravo 24.10.2018 20:42

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

Renjith 24.10.2018 20:46

Вы уверены, что так работает пул потоков?

Alfabravo 24.10.2018 20:52

Я не уверен, поэтому и спросил.

Renjith 24.10.2018 20:53

Тогда не стоит утверждать, что ID "не пересечется" 25. Пожалуйста, проверьте ответ.

Alfabravo 24.10.2018 20:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
84
1

Ответы 1

В основном, как объясняется в ответе это, не гарантируется, что идентификатор потоков в Java будет начинаться с нуля или быть непрерывным при создании.

Здесь в коде вы можете видеть, что их ID установлен с каким-то приращением последовательности.

Еще раз рекомендую вам запустить какой-нибудь инструмент профилирования в вашем Java-приложении, чтобы увидеть фактическое количество потоков, создаваемых в пуле в данный момент времени.

Пул сократится до minSpareThreads = "10" (значение по умолчанию), если потоки не используются. Если вам нужен больший контроль, настройте отдельный элемент Executor.

Konstantin Kolinko 25.10.2018 08:36

Другие вопросы по теме