Назад | Перейти на главную страницу

Настройки большого объема для Apache / Tomcat / Mod_jk

У меня есть сервер с 2 процессорами объемом 3,5 ГБ, работающий на tomcat / apache с mod.jk. Мы видим, что у нашего сервера много доступной памяти, а tomcat не показывает ничего сумасшедшего с точки зрения GC.

Мы пробовали разные настройки для maxClients maxThreads и socket_timeout в worker.properties.

мы усредняем около 4000 одновременных пользователей, немного сложно оценить количество запросов в секунду, но я бы сказал, что это, вероятно, 400 (просто предположение).

Должны ли maxThreads в tomcat всегда быть больше, чем maxClients в httpd? и если да, то насколько.

Мы пробовали maxClients на 250 и maxThreads на 300, и мы наблюдали медлительность в сети, но сервер выглядел нормально.

Также наш средний размер httpd составляет 10 мг.

Любая помощь была бы замечательной!

Спасибо

Вы не говорите, какой MPM вы используете или какую версию Tomcat, поэтому я не могу быть настолько точным, как хотелось бы.

По умолчанию AJP использует постоянные соединения. Следовательно, по умолчанию Tomcat требуется как минимум столько же потоков в его пуле, сколько httpd имеет maxClients. Это, как правило, очень неэффективно, так как большинство этих подключений простаивают.

Есть несколько способов улучшить ситуацию:

  1. Переключитесь на разъем NIO AJP, если он доступен (начиная с Tomcat 7). Вам необходимо настроить коннектор Tomcat AJP с maxThreads> ожидаемыми одновременными запросами.

  2. Отключите повторное использование соединения на стороне httpd. С mod_jk это означает использование

    JkOptions + DisableReuse

Не обращайте внимания на предупреждения в документации о снижении производительности - они неверны. Вам по-прежнему необходимо настроить коннектор Tomcat AJP с maxThreads> ожидаемых одновременных запросов.

Подробнее см. моя обратная прокси-презентация и Заметки Райнера в теме.