2015-01-26 39 views
5

Sono passato da Tomcat 7.0.54 a 8.0.15, aggiornato openSSL a 1.0.1k e tcnative all'ultima versione 1.1.32 con APR 1.5.1.Tomcat 8 Avvio lento con deployWAR

Tuttavia, Tomcat inizia ora da 2 a 3 volte più lentamente di prima. Più chiaramente, richiede molto più tempo per distribuire i file WAR.

Tomcat 7

Jan 20, 2015 3:39:36 PM org.apache.catalina.startup.HostConfig deployWAR 
INFO: Deployment of web application archive <PATH>\file.war has finished in 433 ms 

Tomcat 8

Jan 21, 2015 2:27:01 PM org.apache.catalina.startup.HostConfig deployWAR 
INFO: Deployment of web application archive <PATH>\file.war has finished in 4,310 ms 

Questo accade a tutti i file WAR, tutto è andato da millisecondi a circa 5 secondi.

Ho rimosso JasperListener dal server.xml perché sembra essere stato rimosso.

unpackWARs="false" 
autoDeploy="true" 

unpackWars non fa la differenza se impostato su true (non è notabile). Ho pensato che potrebbe essere stato il problema di scansione delle annotazioni risolto in 8.0.17, ma senza fortuna.

ho notato che jarsToSkip in catalina.properties cambiato da

tomcat.util.scan.DefaultJarScanner.jarsToSkip to 
tomcat.util.scan.StandardJarScanFilter.jarsToSkip 

e che org.apache.catalina.startup.TldConfig.jarsToSkip è stato rimosso e sono andati a context.xml

<JarScanner> 
    <JarScanFilter tldSkip="websocket-api.jar,tomcat-websocket.jar"/> 
</JarScanner> 

Tuttavia, nessuna di queste sembra riportarmi alle prestazioni di Tomcat 7. L'unica azione che lo ha fatto è stata la rimozione dei barattoli websocket. Comunque abbiamo bisogno di loro. Questo mi porta alla conclusione che sono ancora scansionati, anche se dovrebbero essere saltati.

Mi manca qualcosa? Il context.xml non fa lo stesso di catalina.properties jarsToSkip?

+0

I nomi dei file dei vasi che si desidera saltare potrebbe essere cambiato .. probabilmente vale la pena di verificare che in realtà stai saltando quello che pensi di saltare. – Edd

risposta

1

Sto riscontrando problemi simili qui.

Una possibilità che ha migliorato il tempo di avvio è stato quello di aggiungere:

metadata-complete="true" 

al web.xml (elemento webapp), come raccomandato in http://wiki.apache.org/tomcat/HowTo/FasterStartUp. Questo presuppone che il tuo web.xml sia tutto ciò che la tua app web ha bisogno di avviare.

Non ha risolto completamente il problema per me, ma il miglioramento della velocità di avvio è stato notevole.

+0

Purtroppo, per me non fa molta differenza. Vedo forse un miglioramento di 2 secondi in totale. Non è molto da quando è ancora circa 40 secondi più lento di prima. La maggior parte è stata ottenuta con l'avvio parallelo, ma mi piacerebbe riportare i tempi di implementazione a circa 250ms. – RavenLiquid

0

Sei sicuro che unpackWARs = "true" non fa la differenza per te?

C'è una discussione in corso su questo argomento in Bugzilla:

https://issues.apache.org/bugzilla/show_bug.cgi?id=57251

C'è stato stabilito che il comportamento Tomcat 8, quando unpackWARs = "false" sarà notevolmente più lento a causa di una semplificazione implementazione eseguita in codice.

+0

Io sono. Ora ho solo WAR decompressi ma non fa una differenza visibile. Penso che tutto ciò che è sbagliato richieda così tanto tempo che l'effetto delle altre correzioni non è evidente. – RavenLiquid

0

si può provare il parallelismo per l'avvio modificando in conf/server.xml elemento ospite attributo <Host ... startStopThreads="0"/>