2017-02-14 2 views
4

Ich teste den Server mit Spring-Boot. Allerdings habe ich einige Probleme während des Tests.Spring-Boot-Tomcat kann nur weniger als 10.000 Verbindungen bieten?

mein Test ist Wie viele Speicherserver verwenden mit dem Erhöhen der Web Socketsitzungen (die Anzahl der Client).

1.000 Clients (weniger als 9000 Sitzungen) hat keine Probleme mit dem Test. aber, als ich versuchte, 10k Verbindungen zu testen, stellte der Server Verbindungen fast bis 10.000 (manchmal Sitzungen bis 9990, manchmal 9988, 9996 so, nicht die spezifische Grenze die Anzahl der Socket) danach, es hörte einfach auf, Sitzungen zu erstellen , keine Fehler, die nicht reagieren.

Wenn einige Clients Timeout erhalten und die Verbindung freigeben, können andere Clients, die auf die Verbindung warten, Verbindungen herstellen.

'Umwelt' tomcat: 8.0.36 feder boot: 1.3.3 java: 1,8

für Lösungen, versuchte ich

  1. Heap-Größe zu erhöhen.

    • Ich vergrößere jvm Heapspeicher um 5GB. aber Heap-Speicher, die für Verbindungen verwendet werden, sind nur 2 GB. Also, ich denke, dass es nicht mit JVM-Speicher verwandt ist.
  2. Ich habe server.tomcat.max-thread = 20000 in application.porperties gesetzt.

    • aber es war fehlgeschlagen, kein Unterschied vorher.

Ich bin sehr neugierig auf dieses Thema. Wenn Sie dieses Problem kennen und Ideen haben, lassen Sie mich den Grund wissen. Danke.

Antwort

6

Tomcat - maxThreads vs maxConnections

Try maxConnections Eigenschaft setzen mehr als 10000.

Von the doc zu sein:

Die maximale Anzahl der Verbindungen an, die der Server zu einem bestimmten Zeitpunkt akzeptieren und zu verarbeiten. Wenn diese Anzahl erreicht ist, wird der Server eine weitere Verbindung akzeptieren, aber nicht verarbeiten. Diese zusätzliche Verbindung wird blockiert, bis die Anzahl der Verbindungen, die verarbeitet werden, unter maxConnections liegt. Ab diesem Zeitpunkt beginnt der Server erneut, neue Verbindungen zu akzeptieren und zu verarbeiten. Beachten Sie, dass das Betriebssystem nach dem Erreichen des Grenzwerts möglicherweise weiterhin Verbindungen akzeptiert, die auf der Einstellung acceptCount basieren. Der Standardwert variiert je nach Verbindungstyp. Für BIO ist der Standardwert der Wert von maxThreads, sofern kein Executor verwendet wird. In diesem Fall ist der Standardwert der Wert von maxThreads vom Executor. Für NIO ist der Standardwert 10000. Für APR/nativ ist der Standardwert 8192.

Beachten Sie, dass für APR/nativ unter Windows der konfigurierte Wert auf das höchste Vielfache von 1024 reduziert wird, das kleiner oder gleich maxConnections ist. Dies geschieht aus Leistungsgründen. Wenn der Wert auf -1 eingestellt ist, ist die Funktion maxConnections deaktiviert und Verbindungen werden nicht gezählt.

+0

Dank Datei. Das bedeutet, dass der Standardwert für maximale Verbindungen 10.000 ist. – Jason

4

Es gibt eine Eigenschaft für das Frühjahr Boot, tomcat max-Anschluss, der eingestellt werden muss, in application.properties

server.tomcat.max-connections= # Maximum number of connections that the server will accept and process at any given time. 
+0

Danke für Ihre Antwort. aber ich habe das "'server.tomcat.max-Verbindungen' ist eine unbekannte Eigenschaft." Wissen Sie etwas, das ich zusätzlich tun muss? – Jason

+0

Es wurde in Spring Boot 1.5.0 eingeführt – pastafarian

Verwandte Themen