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 verwendet Web Server. Es gibt jedoch interessantere Alternativen, wie zum Beispiel Undertow, einen leistungsstarken Web-Server mit einer asynchronen und nicht blockierenden Architektur, mit dem Sie eine große Anzahl verwalten können 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 fügen Sie dann den Spring-Boot-Starter-Undow hinzu.
Verwenden von pom.xml:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusions> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency> </dependencies>
Verwenden von build.gradle:
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.
Verwenden von application.yml
server: undertow: threads: io: 4 worker: 64
Verwenden von application.properties
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, in 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.
Die Worker-Threads führen blockierende Vorgänge aus, wie z. B. Servlet-Anfragen, die von den 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 Undertow-Dokumentation.
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.
Verwenden von application.yml
server: compression: enabled: true mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json min-response-size: 1024
Verwenden von application.properties
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.
Das obige ist der detaillierte Inhalt vonVerbesserung der Leistung von Spring Boot-Anwendungen – Teil I. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!