Apache + Tomcat с mod_jk: maxThread, устанавливающий после выравнивания нагрузки

У меня есть Apache + установка Tomcat с mod_jk на 2 серверах. Каждый сервер имеет свою собственную пару Apache+Tomcat, и каждый запрос подается рабочими выравнивания нагрузки Tomcat на 2 серверах.

У меня есть вопрос о как Apache maxClient и Tomcat maxThread должен быть установлен.

Числа по умолчанию, Apache: maxClient=150, Tomcat: maxThread=200

В этой конфигурации, если бы у нас есть только 1 установка сервера, она работала бы просто великолепно, поскольку рабочий Tomcat никогда не получает входящие соединения больше чем 150 сразу. Однако, если мы - выравнивание нагрузки между 2 серверами, мог оно быть возможным, что рабочий Tomcat получает 150 + (некоторое число с другого сервера), и сделайте переполнение maxThread как SEVERE: All threads (200) are currently busy?

Если так, должен я устанавливать Tomcat maxThread=300 в этом случае?

Спасибо

6
задан c4il 5 July 2010 в 11:34
поделиться

1 ответ

Установка maxThreads на 300 должна быть в порядке - нет никаких фиксированных правил. Это зависит от того, видите ли вы отказы в соединениях.

Слишком большое значение приводит к большому потреблению памяти, но известно, что производственные Tomcats работают с 750 потоками. См. также здесь. http://java-monitor.com/forum/showthread.php?t=235

Вы действительно получили ошибку SEVERE? Я тестировал на нашем Tomcat 6.0.20, и он выдает сообщение INFO, когда maxThreads превышен.

INFO: Maximum number of threads (200) created for connector with address null and port 8080

Он не отказывает в соединениях, пока не будет превышено значение acceptCount. По умолчанию это значение равно 100.

Из документации Tomcat http://tomcat.apache.org/tomcat-5.5-doc/config/http.html

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

Работает это следующим образом

1) По мере увеличения количества одновременных запросов будут создаваться потоки до настроенного максимума (значение атрибута maxThreads).

Поэтому в вашем случае в этот момент появится сообщение "Создано максимальное количество потоков (200)". Однако запросы по-прежнему будут поставлены в очередь на обслуживание.

2) Если поступает еще больше одновременных запросов, они ставятся в очередь до настроенного максимума (значение атрибута acceptCount).

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

3) Превышение этого числа вызывает ошибки Connection Refused, пока не появятся ресурсы для их обработки.

Так что у вас все должно быть в порядке, пока вы не перейдете на шаг 3

7
ответ дан 17 December 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: