Недавно мы перешли на 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. Я что-то упустил здесь? Некоторая помощь в этом будет очень признательна. Спасибо!