Каковы оптимальные настройки для веб-сервера Tomcat? - PullRequest
2 голосов
/ 04 ноября 2008

Я поддерживаю веб-сайт с около 800 одновременно работающими пользователями. В бизнес-плане говорится, что через год это число будет в 10 раз больше.

Это моя текущая конфигурация:

<Connector port="8080" address="${jboss.bind.address}"
  maxThreads="500" maxHttpHeaderSize="8192"
  emptySessionPath="true" protocol="HTTP/1.1"
  enableLookups="false" redirectPort="8443" acceptCount="100"
  connectionTimeout="20000" disableUploadTimeout="true" />

<Connector port="8443" address="${jboss.bind.address}"
  protocol="HTTP/1.1" SSLEnabled="true"
  maxThreads="500" minSpareThreads="5" maxSpareThreads="25"
    scheme="https" secure="true" clientAuth="false"
    keystoreFile="${jboss.server.home.dir}/conf/ks.p12"
    keystoreType="PKCS12" connectionTimeout="20000"
    keystorePass="pass" sslProtocol="TLS" acceptCount="100" />

Среднее количество используемых потоков составляет около 400 (для каждого http / https). Но пики действительно используют 500 потоков. Я думаю, что у меня будут проблемы, когда я получу 10х пользователей: -)

  • Как мне это настроить?
  • Должен ли я отключить поддержку http? Как я могу настроить время ожидания активности?
  • Какие значения хороши для acceptCount / maxThreads?

Ответы [ 4 ]

4 голосов
/ 04 ноября 2008

Я думаю, что размещение tomcat на сервере Apache Http - гораздо более надежный и быстрый подход. вот плюсы и минусы взяты из http://wiki.apache.org/tomcat/FAQ/Connectors

Почему я должен интегрировать Apache с Tomcat? (или нет)

Есть много причин для интеграции Tomcat с Apache. И есть причины, по которым это тоже не следует делать. Излишне говорить, что все не согласятся с мнением здесь. С производительностью Tomcat 5 и 6 причины производительности становятся все труднее оправдать. Так что вот вопросы для обсуждения при интеграции против нет.

  • кластеризация. Используя Apache в качестве внешнего интерфейса, вы можете позволить Apache выступать в качестве входной двери для вашего контента для нескольких экземпляров Tomcat. Если один из ваших Tomcats выходит из строя, Apache игнорирует его, и ваш системный администратор может спать всю ночь. Эту точку можно игнорировать, если вы используете аппаратный балансировщик нагрузки и возможности кластеризации Tomcat.
  • Кластеры / Безопасность. Вы также можете использовать Apache в качестве входной двери для разных Tomcats для разных пространств имен URL (/ app1 /, / app2 /, / app3 / или виртуальных хостов). Таким образом, каждый из Tomcats может находиться в защищенной области, и с точки зрения безопасности вам нужно только беспокоиться о сервере Apache. По сути, Apache становится интеллектуальным прокси-сервером.
  • Security. Эта тема может повлиять в любом случае. У Java есть менеджер безопасности, в то время как у Apache больше ума и больше хитростей в отношении безопасности. Я не буду вдаваться в подробности, но позвольте Google быть вашим другом. В зависимости от вашего сценария один может быть лучше другого. Но также имейте в виду, что если вы запускаете Apache с Tomcat - вам нужно защищать две системы, а не одну.
  • надстройки. Добавление на CGI, Perl, PHP очень естественно для Apache. Это медленнее и больше для Tomcat. Apache также имеет сотни модулей, которые могут быть подключены по желанию. Tomcat может иметь эту возможность, но код еще не написан.
  • декораторы! С Apache перед Tomcat вы можете выполнять любое количество декораторов, которые Tomcat не поддерживает или не имеет немедленной поддержки кода. Например, mod_headers, mod_rewrite и mod_alias могут быть написаны для Tomcat, но зачем изобретать велосипед, если Apache так хорошо это сделал?
  • Speed. Apache быстрее обслуживает статический контент, чем Tomcat. Но если у вас нет сайта с высоким трафиком, этот пункт бесполезен. Но в некоторых случаях Tomcat может быть быстрее, чем Apache. Итак, сравните ВАШ сайт.
  • Работа с сокетом / стабильность системы. Apache имеет лучшую обработку сокетов в отношении условий ошибок, чем Tomcat. Основная причина в том, что Tomcat должен выполнять всю обработку своих сокетов через JVM, которая должна быть кроссплатформенной. Проблема в том, что оптимизация сокетов - это испытание для конкретной платформы. В большинстве случаев Java-код в порядке, но когда вы также засыпаны сброшенными соединениями, недопустимыми пакетами, недопустимыми запросами с недействительных IP-адресов, Apache лучше справляется с удалением этих ошибок, чем программа на основе JVM. (YMMV) * ​​1023 *
1 голос
/ 26 марта 2013

эй, ты должен взглянуть на

http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html#Production Конфигурация

вы можете установить некоторую конфигурацию, связанную с компиляцией jsp, это должно сделать систему быстрее.

1 голос
/ 04 ноября 2008

Я бы также посмотрел на настройку базовой JVM, а не только на tomcat. этот вопрос содержит несколько полезных советов, особенно в отношении сбора мусора и выделения памяти. По моему опыту, настройка JVM намного эффективнее, чем настройка внутренних компонентов Tomcat.

1 голос
/ 04 ноября 2008

Вы можете настроить это, используя JMeter . Я думаю, что многое зависит от вашей конкретной настройки оборудования. Возможный способ масштабирования вашего сайта - добавить машины. Проверьте Velocity Conference и веб-сайт с высокой масштабируемостью .

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