Spring-boot langsam zu starten

8

Wenn ich meine jhipster-App mit "mvn spring-boot: run" starte, dauert es bis zu 60 Sekunden, um zu starten ... Der erste Teil meines Logbuchs ist:

%Vor%

- & gt; Dann bleibt es für etwa 30 Sekunden hängen, bevor Sie fortfahren:

%Vor%

...

Ich erinnere mich daran, dass ich ältere Versionen des Jhipster-Generators (0.17 usw.) benutzt habe und es in 15-20 Sekunden begann. Ist das normal oder gibt es ein Problem auf meiner Seite? Wo suchen?

Danke, O.

    
user1848637 22.11.2014, 18:30
quelle

5 Antworten

4

Ich habe selbst schon langsame Startzeiten gehabt und mich gefragt, was die Ursache war. Ich bekomme alle Konsolenmeldungen, die sagen, dass verschiedene Dinge begonnen haben und dann hängt es kurz vor der letzten Nachricht, um zu sagen, dass die App geladen wurde.

Schließlich fand ich heraus, dass ich Java VisualVM als Teil des JDK verwenden konnte, um zu sehen, was vor sich ging. Wenn Sie die jdk installiert haben, ist seine jvisualvm.exe im Ordner bin. Wenn ich dann als Application.java debuggen will, erscheint der Tomcat-Prozess und Sie können verfolgen, was passiert.

Ich habe ein paar Thread-Dumps gemacht, wo es hängt und es scheint immer so zu sein, wo die Swagger-API-Dokumente erzeugt werden. Ein bisschen mehr graben und das ist in einer Klasse namens MetricsConfiguration konfiguriert, die ausgeschlossen wird, wenn Sie mit einem Profil namens "schnell" laufen.

In Eclipse habe ich meine Debug-Konfiguration so geändert, dass sie ein Programmargument enthält von:

%Vor%

Dies verkürzt die Startzeit von 230 Sekunden auf nur 25!

Ich hatte einen schnellen Scan und schnell scheint alle möglichen Dinge zu deaktivieren. Es sieht hauptsächlich wie das Zeug unter dem Admin-Menü aus, das Sie während der Entwicklung sowieso nicht brauchen werden. Persönlich würde ich ein schnelles Booten bevorzugen, um die restlichen Dokumente während der Entwicklung sehen zu können.

Swagger, der so ein Schwein ist, hat mich gefragt, ob es doch so eine gute Idee ist. Ist es die Kosten wert? Ich lese dann dieses Ссылка und ich überlege, es einfach ganz zu entfernen. Es ist eine nette Idee, aber fügt dem Build + 33MB hinzu und verursachte für mich sehr langsame Startzeiten.

Für Informationen habe ich rund 16 Entitäten. Also nicht klein, aber auch nicht übermäßig groß.

    
Ben Thurley 25.03.2015 18:34
quelle
0

Das ist seltsam. In der Tat sollte es in 5-15 Sekunden beginnen, abhängig von Ihrer Maschine und spezifischen Einstellungen. Aber es sollte nicht für 30 Sekunden hängen: die Zeile, die Sie anzeigen, ist ein bisschen neu, weil wir die Anwendung im Debug-Modus starten, wenn Sie das Entwicklerprofil verwenden - & gt; Sie können einen Debugger anhängen. Es sieht so aus, als ob Sie darauf warten, dass Sie einen Debugger anschließen: Ich habe es selbst nie gesehen, also haben Sie vielleicht eine bestimmte JVM-Option, um einen Debugger beim Start zu installieren, mit einem Timeout von 30 Sekunden?

    
Julien Dubois 25.11.2014 07:02
quelle
0

Danke für Ihr Feedback. Ich untersuchte und legte mehr Protokolle in die App (Application.java). Eigentlich kommt das Problem nicht aus dem Debug-Modus, die Anwendung hängt hier nicht.

Die erste große "Pause" kommt vom Scannen von liquibase-Paketen (addLiquibaseScanPackages (); in Application.java): 26 Sekunden! Meine zweite Pause bezieht sich immer noch auf Liquibase (Protokoll "Konfigurieren von Liquibase"): 20 Sekunden. Wenn ich während dieser Zeit den Liquibase-Protokolllevel auf DEBUG setze, sehe ich, dass eine Sperre gesetzt und dann wieder freigegeben wird, aber das passiert sehr schnell.

Ich verstehe es wirklich nicht. Ich benutze h2 In-Memory-Datenbank, jdk 1.7.0_25 und Maven 3.0.5, läuft auf MacBook Pro mit SSD. Hier ist mein vollständiges Protokoll, wenn ich mit "mvn spring-boot: run" laufe.

%Vor%

Danke, Olivier

    
user1848637 26.11.2014 15:50
quelle
0

Stellen Sie sicher, dass Sie den Server nicht im Debug-Modus ausführen und einen Haltepunkt festgelegt haben. Dies reduzierte die Startzeit einer meiner Anwendungen von 22 Sekunden auf 3 Minuten.

    
Jannik 23.08.2017 13:37
quelle
-1

Sie können nur xmx wie java -jar -Xmx1024m ändern. Denn wenn Spring Boot gestartet wird, lädt es viele Frühlingsbohnen. Sie können Heapspeicher hinzufügen, um die Leistung zu verbessern.

    
elevensheep 12.12.2016 09:52
quelle

Tags und Links