
우리는 최근 애플리케이션을 위해 WebSphere에서 Tomcat으로 옮겼습니다.
우리는 JDK 1.8 Build 191 및 Tomcat 9.0.50을 사용하고 있습니다. 대부분의 애플리케이션은 Servlet/JSP와 Spring MVC가 포함된 몇 가지 웹앱이 혼합되어 있으며 일부 멀티스레딩을 사용합니다.
이제 테스트 서버가 완벽하게 배포됩니다. 꽤 활기차다. 그러나 프로덕션 환경에서 Tomcat을 배포하면 갑자기 멈춥니다.
예를 들어 다음은 테스트 서버의 출력입니다.
26-Aug-2021 08:56:11.585 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/app/tomcat/webapps/cdsrs.war]
26-Aug-2021 08:56:13.750 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
26-Aug-2021 08:56:14.091 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/app/tomcat/webapps/cdsrs.war] has finished in [2,505] ms
그리고 이것은 Production의 동일한 웹앱입니다.
26-Aug-2021 09:26:18.016 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/app/tomcat/webapps/cdsrs]
26-Aug-2021 09:26:19.870 INFO [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
26-Aug-2021 09:28:52.569 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/app/tomcat/webapps/cdsrs] has finished in [154,553] ms
setenv.sh 파일에 다음이 설정되어 있습니다.
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:gc/gc.log"
export CATALINA_OPTS="$CATALINA_OPTS -Xms3072M"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx8192M"
export 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
같습니다.
<Engine name="Catalina" defaultHost="localhost" startStopThreads="0">
말할 것도 없이, 앱도 매우 느리게 실행됩니다! 페이지 로드 시간은 이제 WebSphere에서 실행했을 때와 비교하여 약 200-300% 증가했습니다. 여기서 뭔가 빠졌나요? 이에 대한 도움을 주시면 정말 감사하겠습니다. 감사해요!