Рейтинг:0

Медленное развертывание Tomcat на сервере Unix

флаг cn

Недавно мы перешли на Tomcat из WebSphere для нашего приложения.

Мы используем: JDK 1.8 сборка 191 и Томкэт 9.0.50. Большая часть приложения представляет собой смесь Servlet/JSP и несколько веб-приложений с Spring MVC, в нем используется многопоточность.

Теперь наши тестовые серверы развертываются абсолютно нормально. Это довольно быстро. Но при развертывании на Tomcat в производственной среде он просто резко останавливается.

Например, это вывод тестового сервера:

26 августа 2021 г., 08:56:11.585 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Развертывание архива веб-приложений [/opt/app/tomcat/webapps/cdsrs.war]
26 августа 2021 г. 08:56:13.750 ИНФОРМАЦИЯ [основная] org.apache.jasper.servlet.TldScanner.scanJars По крайней мере один файл JAR был просканирован на наличие TLD, но не содержал TLD. Включите ведение журнала отладки для этого регистратора, чтобы получить полный список JAR-файлов, которые были просканированы, но в них не были найдены TLD. Пропуск ненужных файлов JAR во время сканирования может сократить время запуска и время компиляции JSP.
26 августа 2021 г., 08:56:14.091 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Развертывание архива веб-приложений [/opt/app/tomcat/webapps/cdsrs.war] завершено в [2,505] РС

А это то же самое веб-приложение в продакшне:

26 августа 2021 г., 09:26:18.016 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Каталог развертывания веб-приложений [/opt/app/tomcat/webapps/cdsrs]
26 августа 2021 г. 09:26:19.870 ИНФОРМАЦИЯ [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars По крайней мере один файл JAR был просканирован на наличие TLD, но не содержал TLD. Включите ведение журнала отладки для этого регистратора, чтобы получить полный список JAR-файлов, которые были просканированы, но в них не были найдены TLD. Пропуск ненужных файлов JAR во время сканирования может сократить время запуска и время компиляции JSP.
26 августа 2021 г. 09:28:52.569 ИНФОРМАЦИЯ [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Развертывание каталога веб-приложений [/opt/app/tomcat/webapps/cdsrs] завершено в [ 154 553] мс

У меня есть этот набор в файле setenv.sh:

export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:gc/gc.log"
экспорт CATALINA_OPTS="$CATALINA_OPTS-Xms3072M"
экспорт CATALINA_OPTS="$CATALINA_OPTS-Xmx8192M"
экспорт CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=3072M"

И я настроил свой server.xml с помощью:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpHeaderSize="65536" maxThreads="150" SSLEnabled="true" acceptorThreadCount="4" >
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/keystore.jks" certificateKeystorePassword="some_password" type="RSA" />
    </SSLHostConfig>
</Connector>
<Connector address="SERVER_HOSTNAME" port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="65536" connectionTimeout="20000" redirectPort="8443" acceptorThreadCount="4" />

И Двигатель пометить как:

<Engine name="Catalina" defaultHost="localhost" startStopThreads="0">

Не говоря уже о том, что приложение на нем тоже работает очень медленно! Время загрузки страницы увеличилось примерно на 200-300% по сравнению с тем, когда оно работало в WebSphere. Я что-то упустил здесь? Некоторая помощь в этом будет очень признательна. Спасибо!

флаг cn
Также, если кто-то может пролить свет на NIO и NIO2. Если переход на NIO2 немного улучшит производительность.
Michael Hampton avatar
флаг cz
В одном случае вы развертываете файл WAR, а в другом (длинном случае) вы развертываете из каталога. Почему разница?
флаг cn
@MichaelHampton В обоих случаях я развертываю WAR. Журналы относятся к запуску сервера. Файлы WAR уже присутствуют в каталоге веб-приложений Tomcat. Разница, если бы я мог сказать вам, в чем причина! Производственные Unix-машины намного мощнее тестовых.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.