2015-01-26 4 views
5

Ich ging von Tomcat 7.0.54 zu 8.0.15, aktualisierte openSSL zu 1.0.1k und tcnative zu dem letzten 1.1.32 mit APR 1.5.1.Tomcat 8 Langsamer Start mit deployWAR

Allerdings startet Tomcat jetzt etwa 2 bis 3 mal langsamer als zuvor. Am auffälligsten ist, dass die Bereitstellung von WAR-Dateien erheblich länger dauert.

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 

Dies geschieht, um alle WAR-Dateien, gingen alle von Millisekunden bis etwa 5 Sekunden.

Ich habe den JasperListener aus der Datei server.xml entfernt, da er scheinbar entfernt wurde.

unpackWars macht keinen Unterschied, wenn auf wahr (zumindest nicht bemerkbar) gesetzt ist. Ich dachte, es könnte das Annotations-Scan-Problem gewesen sein, das in 8.0.17 behoben wurde, aber kein Glück.

bemerkte ich, dass jarsToSkip in catalina.properties von

geändert
tomcat.util.scan.DefaultJarScanner.jarsToSkip to 
tomcat.util.scan.StandardJarScanFilter.jarsToSkip 

und dass org.apache.catalina.startup.TldConfig.jarsToSkip entfernt wurde, und ging

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

context.xml Nichts davon scheint mich jedoch zu der Leistung von Tomcat 7 zurückzubringen. Die einzige Aktion, die dies tat, war das Entfernen der Websocket-Gläser. Aber wir brauchen sie. Das bringt mich zu dem Schluss, dass sie immer noch gescannt werden, obwohl sie übersprungen werden sollten.

Fehle ich etwas? Ist die context.xml nicht mit der catalina.properties jarsToSkip identisch?

+0

die Dateinamen der Gläser Sie können geändert überspringen wollen .. .. wahrscheinlich lohnt sich zu überprüfen, Sie überspringen tatsächlich, was Sie denken, Sie überspringen – Edd

Antwort

1

Ich habe ähnliche Probleme hier.

Eine Option, die die Startzeit verbessert wurde hinzuzufügen:

metadata-complete="true" 

zum web.xml (Webapp-Elemente), wie in http://wiki.apache.org/tomcat/HowTo/FasterStartUp empfohlen. Dies setzt voraus, dass Ihre web.xml alles ist, was Ihre Web-App zum Booten benötigt.

Es hat das Problem für mich nicht vollständig behoben, aber die Verbesserung der Startgeschwindigkeit war beträchtlich.

+0

Leider macht es für mich nicht viel Unterschied. Ich sehe vielleicht eine Verbesserung von insgesamt 2 Sekunden. Das ist nicht viel, da es immer noch etwa 40 Sekunden langsamer ist als zuvor. Die meisten sollten mit parallelem Start zu gewinnen, aber ich möchte die Bereitstellungszeiten zurück auf etwa 250 ms reduzieren. – RavenLiquid

0

Sind Sie sicher, entpackenWARs = "true" macht keinen Unterschied für Sie?

Es gibt eine laufende Diskussion über dieses Thema in Bugzilla:

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

Da ist es, dass das Verhalten Tomcat 8 Jahren gegründet wurde, wenn unpackWARs = „false“ wird wegen einer Implementierung Vereinfachung in der ausgeführt merklich langsamer sein Code.

+0

Ich bin. Ich habe jetzt nur WARs ausgepackt, aber es macht keinen sichtbaren Unterschied. Ich denke, was auch immer falsch ist, nimmt so viel Zeit in Anspruch, dass die Auswirkungen der anderen Korrekturen nicht bemerkbar sind. – RavenLiquid

0

Sie können Parallelität zur Inbetriebnahme versuchen durch in conf/server.xml Hostelementwechsel Attribut <Host ... startStopThreads="0"/>