Heim  >  Artikel  >  Java  >  Was ist der Grund, warum SpringBoot langsam startet?

Was ist der Grund, warum SpringBoot langsam startet?

WBOY
WBOYnach vorne
2023-05-17 11:01:263933Durchsuche

    Der Grund, warum SpringBoot langsam startet

    Die Architektur von Spring Boot ist so verbreitet, dass man sie manchmal nicht beherrschen kann Es ist Ihnen peinlich zu sagen, dass Sie in Java arbeiten. Aber Feuer kehrt zum Feuer zurück, und es gibt einige kleine Probleme, auf die wir achten müssen.

    Wenn es sich um ein einzelnes Projekt handelt und es keine Anforderungen an die Startgeschwindigkeit gibt, dann ignorieren Sie es bitte.

    Geben wir das folgende Thema ein: Unter welchen Umständen wird der Start des Spring-Boot-Projekts langsamer? Projekt kann nicht sein Zurückhalten, sonst sagen Sie, dass das Projekt langsam startet und das Projekt immer noch denkt, dass die Maschine nicht gut ist...

    Zum Beispiel das Netzwerk, die Speichergröße, die Anzahl der CPU-Kerne usw. müssen nicht zu hoch sein, zumindest muss es ausreichend sein Es gibt zu viele nutzlose Konfigurationen. Im einfachsten Web haben Sie beispielsweise auch verschiedene andere Maven-Konfigurationen hinzugefügt und diese im Projekt konfiguriert (dies ist nur ein übertriebenes Beispiel, diese Konfigurationen werden nicht benötigt), und dann versteht das Projekt selbst es nicht Da Sie es konfiguriert haben , dann laden Sie es.

    Eins dauert 0,1 Sekunden, 10 dauert 1 Sekunde, 100 dauert 10 Sekunden ... und so weiter. Das ist am einfachsten zu verstehen.

    Grund 2

    Automatische Konfiguration des Federstiefels. Obwohl die automatische Konfiguration ein Highlight von Spring Boot ist, ist sie auch ein Nachteil, der zu langsamen Startzeiten führt.

    Auf keinen Fall, normalerweise haben Dinge, die einfach zu bedienen sind und über volle Funktionen verfügen, an manchen Stellen immer Mängel.

    Wie oben erwähnt, gibt es viele nutzlose Konfigurationen. Was ich hier sagen möchte, ist, dass Spring Boot zu viele Dinge selbst zusammenbaut.

    Sie können sehen, dass die spring.factories-Dateien in den entsprechenden JAR-Paketen von Spring Boot gespeichert sind. Wenn Sie hineinschauen, können Sie sehen, dass die meisten von ihnen viele Klassen geschrieben haben, die verwendet werden Spring Boot automatisch zu implementieren. Eine der Kernkomponenten der Montage.

    Aber wenn Sie genau hinsehen, werden Sie feststellen, dass es tatsächlich viele Kategorien gibt, die Sie möglicherweise überhaupt nicht verwenden.

    Aber was können Sie tun? Ob Sie es nutzen oder nicht, es wird es zumindest für Sie überprüfen.

    Grund 3

    Das Projekt ist nicht rational genug. Das Konzept der Microservices erfreut sich meiner Meinung nach mittlerweile großer Beliebtheit und Einfachheit. Die meisten Stellen, an denen die Startgeschwindigkeit im Vordergrund steht, liegen hauptsächlich in Microservice-Projekten.

    Bei einem Microservice-Projekt ist es am besten, es innerhalb von 10 Sekunden zu starten. Aber die meisten können es nicht, weil die Projekte nicht ausreichend detailliert sind.

    Ob eine Schnittstelle schneller zu starten ist oder 10 oder mehr, die Antwort liegt auf der Hand. Viele Projekte sind groß und umfassend, was bedeutet, dass es viele Funktionen, vollständige Konfigurationen, verschiedene erweiterbare Konfigurationen usw. gibt. Es ist möglicherweise nicht umfassend, aber was bedeutet das, dass Sie viele Konfigurationen haben? Es ist egal, ob sie nützlich sind oder nicht. Zumindest müssen noch viel mehr Klassendateien kompiliert und geladen werden. Sie sagten, Sie möchten, dass ein solches Projekt schnell startet.

    Lösung

    Überprüfen Sie, ob in Maven zu viele nutzlose Abhängigkeiten vorhanden sind

    #🎜🎜 #Es ist komplizierter. Verwenden Sie das Spring-Boot-Maven-Plug-In, um den Start zu debuggen. Geben Sie dann direkt in der Startup-Klasse an, dass nur die verwendeten Klassen gestartet werden Löschen Sie die Annotation @SpringBootApplication, füllen Sie die Annotationen @Configuration und @Import manuell aus und fügen Sie die konfigurierten Klassen in die Annotation @Import ein.

    Ersetzen Sie einige Abhängigkeiten durch eine schnellere Konfiguration. Beispielsweise verwenden Sie den Datenbankverbindungspool A, der über alle Funktionen und viele Konfigurationen verfügt, aber langsamer ist. Tatsächlich kann der Verbindungspool B jedoch auch die Projektanforderungen erfüllen, verfügt jedoch über relativ wenige Funktionen, sodass weniger Konfigurationen erforderlich sind und er schneller ist Brauchen Sie einen? Wählen Sie einen zwischen A und B.
    • Splitten Sie schlankere Projekte auf, um sie unabhängig auszuführen. Groß und umfassend bedeutet mehr, aber nicht raffiniert. Schlank und einfach bedeutet weniger, aber kompetent. Ihre Geschwindigkeit ist selbstverständlich und eine Metapher .
    • So verbessern Sie die Startgeschwindigkeit der SpringBoot-Anwendung
    • Einschränken des Umfangs der Scan-Klassen @ComponentScan und @SpringBootApplication

      #🎜 🎜#2, Deaktivieren Sie die JMX-Überwachung von Spring Boot, setzen Sie spring.jmx.enabled=false

    • 3, legen Sie den JVM-Parameter -noverify fest, überprüfen Sie die Klasse nicht
    • 4 , Starten Sie beim Laden von Bohnen das verzögerte Laden

    • 5 und verwenden Sie das globale verzögerte Laden von Spring Boot

    6. Versuchen Sie, keine Anmerkungen für AOP-Aspekte zu verwenden, da dies zu Problemen führen kann Alle Methoden müssen beim Start gescannt werden.

    7. Deaktivieren Sie einige Endpunktüberwachungsfunktionen Swagger scannt die Schnittstelle. Geben Sie nur die Scan-Klasse unter einem bestimmten Pfad an.

    10. Das Scannen der Feign-Client-Schnittstelle schränkt den Umfang des Paket-Scannens ein.

    Das obige ist der detaillierte Inhalt vonWas ist der Grund, warum SpringBoot langsam startet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen