Ne-am mutat recent la Tomcat de la WebSphere pentru aplicația noastră.
Noi folosim:
JDK 1.8 Build 191 și
Tomcat 9.0.50.
Cea mai mare parte a aplicației este o combinație de Servlet/JSP și câteva aplicații web cu Spring MVC, folosește ceva multithreading
Acum serverele noastre de testare se implementează absolut bine. Este destul de zdravăn. Dar atunci când implementați pe Tomcat în producție, se oprește brusc.
De exemplu, aceasta este o ieșire de la serverul de testare:
26-Aug-2021 08:56:11.585 INFO [principal] org.apache.catalina.startup.HostConfig.deployWAR Implementarea arhivei aplicației web [/opt/app/tomcat/webapps/cdsrs.war]
26-aug-2021 08:56:13.750 INFO [principal] org.apache.jasper.servlet.TldScanner.scanJars Cel puțin un JAR a fost scanat pentru TLD-uri, dar nu conținea TLD-uri. Activați înregistrarea de depanare pentru acest logger pentru o listă completă a JAR-urilor care au fost scanate, dar nu au fost găsite TLD-uri în ele. Omiterea JAR-urilor inutile în timpul scanării poate îmbunătăți timpul de pornire și timpul de compilare JSP.
26-Aug-2021 08:56:14.091 INFO [principal] org.apache.catalina.startup.HostConfig.deployWAR Implementarea arhivei aplicației web [/opt/app/tomcat/webapps/cdsrs.war] s-a încheiat în [2.505] Domnișoară
Și aceasta este aceeași aplicație web pe producție:
26-Aug-2021 09:26:18.016 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Implementarea directorului aplicației web [/opt/app/tomcat/webapps/cdsrs]
26-aug-2021 09:26:19.870 INFO [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars Cel puțin un JAR a fost scanat pentru TLD-uri, dar nu conținea TLD-uri. Activați înregistrarea de depanare pentru acest logger pentru o listă completă a JAR-urilor care au fost scanate, dar nu au fost găsite TLD-uri în ele. Omiterea JAR-urilor inutile în timpul scanării poate îmbunătăți timpul de pornire și timpul de compilare JSP.
26-Aug-2021 09:28:52.569 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Implementarea directorului aplicației web [/opt/app/tomcat/webapps/cdsrs] s-a încheiat în [ 154.553] ms
Am acest set pe fișierul 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"
Și mi-am configurat server.xml cu:
<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" />
Si Motor
eticheta ca:
<Engine name="Catalina" defaultHost="localhost" startStopThreads="0">
Ca să nu mai vorbim că aplicația rulează foarte lent și pe ea! Timpii de încărcare a paginii au crescut cu aproximativ 200-300% acum comparativ cu când rula pe WebSphere. Oare imi scapa ceva aici? Un ajutor în acest sens ar fi foarte apreciat. Mulțumiri!