Beim Starten von Spring Boot-Anwendungen verwenden wir normalerweise die von Startern bereitgestellten Standardeinstellungen, was für die meisten Fälle ausreichend ist. Wenn wir jedoch Leistung benötigen, können wir spezifische Anpassungen vornehmen, wie im ersten Teil dieses Artikels gezeigt wird.
Anwendungen web, RESTFul, die Spring MVC verwenden, fügen im Allgemeinen die Spring-Boot-Starter-Web-Abhängigkeit hinzu, die standardmäßig Tomcat als Server verwendet web. Es gibt jedoch interessantere Alternativen, wie zum Beispiel Undertow, einen leistungsstarken Web-Server mit einer asynchronen und nicht blockierenden Architektur, der es ihm ermöglicht, eine große Anzahl zu verarbeiten von gleichzeitigen Verbindungen effizient, wodurch es für Hochleistungsanwendungen geeignet ist. Wir sagen nicht, dass Tomcat schlecht ist, aber wir können Undertow.
eine Chance geben.Damit wir Undertow als Web-Server verwenden können, müssen wir die Spring-Boot-Starter-Tomcat-Abhängigkeit ignorieren, die Spring-Boot-Starter-Web bereits hinzufügt und dann den Spring-Boot-Starter-Undertow hinzufügen.
Pom.xml verwenden:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow
Build.gradle verwenden:
dependencies { implementation('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } implementation 'org.springframework.boot:spring-boot-starter-undertow' }
Über application.properties oder application.yml können wir konfigurieren, wie viele IO-Threads und wie viele Worker-Threads der Server verwenden soll.
Anwendung.yml verwenden
server: undertow: threads: io: 4 worker: 64
Anwendung.properties verwenden
server.undertow.threads.io=4 server.undertow.threads.worker=64
E/A-Threads führen nicht blockierende Vorgänge aus und sollten niemals blockierende Vorgänge ausführen, da sie dafür verantwortlich sind, bei der Anwendung ankommende Verbindungen abzuhören und sie dann an eine Verarbeitungswarteschlange zu senden. Ein üblicher Wert sind zwei I/O-Threads pro CPU-Kern.
Arbeitsthreads führen blockierende Vorgänge aus, z. B. Servlet-Anfragen, die von E/A-Threads an die Verarbeitungswarteschlange gesendet wurden. Der ideale Wert hängt von der Arbeitslast ab, es wird jedoch generell empfohlen, etwa 10 Threads pro CPU-Kern zu konfigurieren.
Ausführlichere Informationen und weitere Optionen, die erkundet werden können, finden Sie in der Dokumentation zu Undertow.
Datenkomprimierung ist eine Funktion, die darauf abzielt, die Körpergröße von HTTP-Antworten zu reduzieren, was wiederum die Leistung unserer Anwendung verbessern kann, indem die über das Netzwerk übertragene Datenmenge reduziert wird.
Das Konfigurieren der Datenkomprimierung in Spring Boot ist eine triviale Aufgabe, da es diese Funktionalität unterstützt.
Anwendung.yml verwenden
server: compression: enabled: true mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json min-response-size: 1024
Anwendung.properties verwenden
server.compression.enabled=true server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json server.compression.min-response-size=1024
server.compression.enabled: Aktiviert/deaktiviert die Komprimierung.
server.compression.mime-types: Liste der MIME-Typen, die komprimiert werden sollen.
server.compression.min-response-size: Mindestgröße von „Content-Length“, die für die Durchführung der Komprimierung erforderlich ist.
Damit schließen wir den ersten Teil des Artikels. Im nächsten Teil erfahren wir mehr über Hikari, JPA und Hibernate und erfahren, wie man diese konfiguriert, um die Leistung von Spring Boot-Anwendungen weiter zu verbessern.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3