Puncte:0

Implementarea Tomcat lentă pe serverul Unix

drapel cn

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!

drapel cn
De asemenea, dacă cineva poate face lumină asupra NIO și NIO2. Dacă trecerea la NIO2 ar îmbunătăți puțin performanța.
Michael Hampton avatar
drapel cz
Într-un caz, implementați un fișier WAR și în celălalt (caz lung) implementați dintr-un director. De ce diferența?
drapel cn
@MichaelHampton În ambele cazuri, implementez un RĂZBOI. Jurnalele sunt de la pornirea serverului. Fișierele WAR sunt deja prezente în directorul aplicației web Tomcat. Diferența, aș vrea să vă pot spune care este motivul! Mașinile Unix de producție sunt mult mai robuste decât cele de testare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.