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

tomcat maxThreads

Я хочу увеличить maxThreads для коннектора ajp до 500, я заметил, что у него есть порт перенаправления 8443, поэтому следует ли мне также увеличить maxThreads коннектора на порту 8443?

<!-- Define a SSL HTTP/1.1 Connector on port 8443
     This connector uses the JSSE configuration, when using APR, the
     connector should be using the OpenSSL style configuration
     described in the APR documentation -->
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
-->

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads="500"/>

В любых настройках httpd + Tomcat, с которыми я работал, мы избавляемся от любых HTTP-коннекторов, добавляем коннектор AJP для обратной петли и позволяем ему работать без шифрования. Цель состоит в том, чтобы позволить Tomcat выполнять работу приложения Java, а httpd обрабатывать все службы HTTP.

Единственный способ использования redirectPort в случае коннектора AJP - наличие веб-приложения (web.xml), содержащего ограничение безопасности, имеющее ограничение данных пользователя, для которого установлено значение Transport-Guarantee как CONFIDENTIAL.

По крайней мере, в нашем случае в наших приложениях редко бывает такая конструкция. Обычно мы обеспечиваем безопасную связь через httpd или балансировщик нагрузки. Большинство наших приложений в любом случае требуют SSL в любое время из-за отображаемых данных.

Обновленный ответ:

Вот реальная базовая конфигурация Tomcat с небольшой настройкой для увеличения maxThreads коннектора до 500. Он настроен только на прослушивание трафика AJP / 1.3 по шлейфу (а также для порта выключения).

<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Service name="Catalina">
    <Connector port="8009" protocol="AJP/1.3" address="127.0.0.1" enableLookups="false" maxThreads="500" />
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>

На стороне httpd у нас есть файл proxy_ajp.conf, который мы используем для конкретного сопоставления URL-путей с Tomcat. Пример:

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

ProxyPass /fooAppA/ ajp://localhost:8009/fooAppA/
ProxyPass /fooAppB/ ajp://localhost:8009/fooAppB/

ProxyPassReverse /fooAppA/ ajp://localhost:8009/fooAppA/
ProxyPassReverse /fooAppB/ ajp://localhost:8009/fooAppB/

Httpd.conf можно настроить на использование (и, при необходимости, принудительное использование) SSL. Но это совершенно необязательно.