0

Ich entwickle Rest-APIs mit Spring Boot, die auf AWS Beanstalk bereitgestellt werden. Potenziell wird der Service jeden Tag von Tausenden von Kunden aufgerufen. Daher würde ich gerne die Fähigkeit von Spring Boot verstehen, mehrere Anfragen zu bearbeiten.Kann Spring Boot-Anwendung mehrere Anfragen gleichzeitig behandeln?

Von dem, was ich in Spring-Boot: Handle multiple requests concurrently und How to have thread safe controller in spring boot gelesen habe, scheint es, dass Spring Boot Anfragen gleichzeitig behandeln kann, während der Controller threadsicher ist.

Wenn zwei Anforderungen gleichzeitig an denselben Endpunkt für Aktualisierungen gesendet werden, verarbeitet der Controller die Anforderungen nacheinander oder gleichzeitig mit zwei parallelen Threads? Wenn Letzteres, hat jeder Thread seinen eigenen Entity Manager? Gibt es eine Möglichkeit, einen Thread-Pool zu implementieren, um die Anzahl der Threads basierend auf der Kapazität der EC2-Instanz zu begrenzen? Übrigens, wie kann ich entscheiden, wie groß eine Instanz sein soll, basierend auf der geschätzten Menge an Anfragen?

Antwort

2

Ja, Spring Boot kann Anfragen gleichzeitig behandeln! Sie können die Anzahl gleichzeitiger Anfragen begrenzen, indem Sie server.tomcat.max-threads zu Ihrer application.properties oder application.yml hinzufügen. Spring verwaltet einen Pool von Verbindungen und verwaltet die Verteilung von Entitätsmanagern (entsprechend dem Minimum und Maximum der Verbindungen, die Sie in Ihren Eigenschaften angeben). Ich glaube, Sie mehr darüber hier lesen: When are connections returned to the connection pool with Spring JPA (Hibernate) Entity Manager?

+0

ich die Anwendung als Krieg bin bereitstellen, die keinen eingebetteten Kater nicht verwendet. Funktioniert das 'server.tomcat.max-threads' noch? – ddd

+0

Nein. Dann müssen Sie Ihren Servlet-Container separat konfigurieren. – dunni

+0

Oh, in diesem Fall werden Max-Threads nicht funktionieren, aber Sie können die Anzahl der gleichzeitigen Verbindungen in Ihrem Elastic Beanstalk ändern! Geben Sie einfach Ihren Worker ein, gehen Sie zu "Configuration> Worker Configuration" und ändern Sie das Feld "HTTP Connections". –

1

Wenn Sie Web-Anwendungen mit Frühlings-Boot entwickeln (ich meine, dass man die Abhängigkeit von spring-boot-starter-web in Ihre pom-Datei enthalten sind), Frühling wird automatisch Web-Container einzubetten (Tomcat Standard) und es kann Anfragen gleichzeitig bearbeiten, genauso wie gängige Webcontainer.

Sie können auch den Standard-Webcontainer von Tomcat zu Undertow oder Jetty ändern, indem Sie die Abhängigkeiten ändern.

Wie @Felipe Mariano sagte, können Sie die maximale Anzahl von Worker-Threads für verschiedene Web-Container in Ihrer Konfigurationsdatei unten einschränken.
(1) Für Tomcat: server.tomcat.max-threads
(2) Für Undertow: server.undertow.worker-threads
(3) Für Jetty: server.jetty.acceptors

Verwandte Themen