Heim  >  Artikel  >  Java  >  So lösen Sie das Problem der maximalen Parallelität, die vom integrierten Tomcat von Springboot unterstützt wird

So lösen Sie das Problem der maximalen Parallelität, die vom integrierten Tomcat von Springboot unterstützt wird

WBOY
WBOYnach vorne
2023-05-22 20:21:503898Durchsuche

    Der integrierte Tomcat von SpringBoot unterstützt die maximale Parallelität.

    Der integrierte Tomcat von SpringBoot beträgt in den Standardeinstellungen 200 Threads und 10.000 Verbindungen. Standardmäßig beträgt die unterstützte Parallelität 10.000, was bedeutet, dass Tomcat zwei Modi für die Verarbeitung von Verbindungen hat: 1 ist BIO und ein Thread verarbeitet nur eine Socket-Verbindung. Ein Thread verarbeitet mehrere Socket-Verbindungen.

    Ein einzelner Thread, der mehrere Verbindungen verarbeitet, stellt normalerweise kein allzu großes Problem dar, da HTTP-Anfragen nicht zu zeitaufwändig sind und mehrere Verbindungen normalerweise keine Nachrichten gleichzeitig senden. Ein Thread, der mehrere Verbindungen verarbeitet, ist sehr langsam und es kann zu einer Zeitüberschreitung kommen

    Standardmäßige integrierte Tomcat-Konfiguration

    server.tomcat.accept-count: Warteschlangenlänge, wenn die Anzahl der Threads, die Wenn alle Anforderungen aufgebraucht sind, werden sie in die Warteschlange gestellt. Wenn die Warteschlange voll ist, wird die Verarbeitung abgelehnt.

      server.tomcat.max-connections: Maximale Anzahl von Verbindungen, Standard 10000
    • server.tomcat.accept-count:等待队列长度,当可分配的线程数全部用完之后,后续的请求将进入等待队列等待,等待队列满后则拒绝处理,默认100。

    • server.tomcat.max-connections:最大可被连接数,默认10000

    • server.tomcat.max-threads:最大工作线程数,默认200,

    • server.tomcat.min-spare-threads

      server.tomcat.max-threads: Maximale Anzahl von Arbeitsthreads Der Standardwert ist 200 In der Standardkonfiguration kommt es zu einer Verbindungsverweigerung, nachdem die Anzahl der Verbindungen 10.000 überschreitet
    Unter der Standardkonfiguration werden die ausgelösten Anforderungen nach mehr als 200+100 (maximale Anzahl von Arbeitsthreads + Länge der Warteschlange) abgelehnt.

    Wenn die Die Standardkonfiguration kann die aktuellen Anforderungen nicht erfüllen. Sie können sie selbst optimieren und die Konfiguration für die Verarbeitung manuell ändern. Ändern Sie die Profildatei Prozess

    ps -ef |. //Zeigen Sie den vom Projekt gestarteten Port an

    pstree -p 7968 |. //Überprüfen Sie die Anzahl der Prozesse

    Wir können auch die Konfigurationsdatei verwenden und die WebServerConfiguration hinzufügen. Java-Datei

    server.port=7001
    
    server.tomcat.accept-count=1000
    
    server.tomcat.max-connections=10000
    
    server.tomcat.max-threads=500
    
    server.tomcat.min-spare-threads=100

    Bemerkungen:

    MySQL-Datenbank-QPS-Kapazitätsproblem:

    Primärschlüsselabfrage: zig Millionen Daten == 1-10 ms

    Einzigartige Indexabfrage: zig Millionen Daten = = 10-100 ms

    Nicht eindeutige Indexabfrage: Dutzende Millionen Daten == 100-1000 ms

    • Keine Indexdaten: Daten auf Millionenebene == 1000 ms+

    • MySQL-Datenbank-TPS-Kapazitätsproblem:
    • Aktualisierungs- und Löschvorgang ohne Einfügen: Gleiche Abfrage
    • Einfügevorgang: 1 W ~ 10 W tps (abhängig von der Konfigurationsoptimierung)

    Mehrere Möglichkeiten zur Erhöhung der Parallelität von Tomcat 1. Apache + Tomcat wird kombiniert, um Apache für statische Seiten und Tomcat für dynamische Seiten zu verwenden. Gleichzeitig wird die ConnectionTimeout-Zeit reduziert, um den Fall zu bewältigen, dass die Parallelität zu groß ist und es zu spät für das Thread-Recycling ist.

      2. Für das Problem des übermäßigen Drucks kann ein Lastausgleich durchgeführt werden, und wenn die JVM zu groß ist, steigen die Kosten für die Speicherverwaltung erheblich. Ein vernünftigerer und wissenschaftlicherer Ansatz besteht darin, 2 GB Speicher zu verwenden und 3 bis 4 TOMCAT-Instanzen mit jeweils 512 MB Speicher zu konfigurieren.
    • 3. Viele Leute empfehlen die Verwendung von C3P0, was die gleichzeitige Leistung des Datenbankzugriffs um ein Vielfaches verbessern kann.

    • 4. Die Verwendung eines Tomcat-Clusters kann die Leistung des Servers maximieren. Sie können mehrere Tomcats auf Servern mit höheren Konfigurationen bereitstellen oder Tomcats separat auf mehreren Servern bereitstellen. Es wurde bestätigt, dass im Hinblick auf die Reaktion des Systems auf eine große Anzahl von Benutzern der Apache+3Tomcat-Cluster > Und wenn Sie die Bereitstellungsmethode von Apache + mehreren Tomcat-Clustern verwenden, kann das System weiterhin verwendet werden, wenn ein Tomcat ausfällt. Daher müssen Sie die Leistung der Software maximieren, wenn die Leistung des Hardwaresystems überlegen ist. und Sie können die Methode zum Hinzufügen von Tomcat-Clustern verwenden.
    • 1. Konfigurieren Sie MPM (Multi Processing Modules). ThreadPerChild wird verwendet, um die Anzahl der Threads für jeden Prozess festzulegen. In der Windows-Umgebung ist der Standardwert 64 und der Maximalwert ist 1920. Es wird empfohlen, ihn zwischen 100 und 500 festzulegen. Der Wert wird größer, andernfalls kleiner. Die maximale Anzahl von Anfragen, die jeder untergeordnete Prozess verarbeiten kann, wird durch den Parameter MaxRequestPerChild bestimmt. Der Wert dieses Parameters hängt eher vom Speicher des Servers ab. Wenn der Speicher relativ groß ist, stellen Sie einen kleineren Wert ein.

    • 2 und Namensauflösung HostnameLookups aus

    3. Schalten Sie das UseCanonicalName-Modul ein. mod_auth.so.

    5. KeepAlive-Unterstützung aktivieren

    KeepAlive an, KeepAliveTimeout 15 MaxKeepAliveRequests 1000

    Laut tatsächlicher Erfahrung ist der Effekt der Verbesserung der Systemleistung durch Apache- und Tomcat-Cluster sehr offensichtlich Hardware-Ressourcen und deren gemeinsame Nutzung durch die Verarbeitung mehrerer Tomcats. Der Druck, wenn Tomcat allein verwendet wird.

    Die maximale Anzahl der vom Webserver zugelassenen Verbindungen hängt auch von den Kernel-Parametereinstellungen des Betriebssystems ab. Normalerweise beträgt sie etwa 2.000 für Windows und etwa 1.000 für Linux.

    Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der maximalen Parallelität, die vom integrierten Tomcat von Springboot unterstützt wird. 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