Heim  >  Artikel  >  PHP-Framework  >  Wie erreicht Workerman eine hohe Parallelität?

Wie erreicht Workerman eine hohe Parallelität?

(*-*)浩
(*-*)浩Original
2019-12-05 10:21:364782Durchsuche

Wie erreicht Workerman eine hohe Parallelität?

Das Konzept der Parallelität ist zu vage. Hier verwenden wir zwei quantifizierbare Indikatoren: die Anzahl gleichzeitiger Verbindungen und die Anzahl gleichzeitiger Anfragen.

Die Anzahl der gleichzeitigen Verbindungen bezieht sich darauf, wie viele TCP-Verbindungen der Server derzeit unterhält, und es spielt keine Rolle, ob auf diesen Verbindungen Datenkommunikation stattfindet. (Empfohlenes Lernen: Workerman-Tutorial )

Beispielsweise kann ein Nachrichten-Push-Server Millionen von Geräteverbindungen aufrechterhalten, da auf der Verbindung nur wenig Datenkommunikation stattfindet nahezu 0 sein, und solange genügend Speicher vorhanden ist, können Sie weiterhin Verbindungen annehmen.

Videokursempfehlung →: "Parallelitätslösung für Zehnmillionen Daten (Theorie + praktischer Kampf)"

Gleichzeitigkeit Die Anzahl der Anfragen wird im Allgemeinen anhand von QPS gemessen (wie viele Anfragen der Server pro Sekunde verarbeitet), aber die Anzahl der TCP-Verbindungen auf dem Server im aktuellen Moment ist nicht von großer Bedeutung. Wenn ein Server beispielsweise nur 10 Client-Verbindungen hat und jede Client-Verbindung 1 W Anfragen pro Sekunde hat, muss der Server in der Lage sein, mindestens 10 * 1 W = 10 W Durchsatz pro Sekunde (QPS) zu unterstützen.

Angenommen, der Durchsatz dieses Servers beträgt 10 W pro Sekunde. Wenn jeder Client 1 Anfrage pro Sekunde an den Server sendet, kann dieser Server 10 W-Clients unterstützen.

Die Anzahl gleichzeitiger Verbindungen ist durch den Serverspeicher begrenzt. Im Allgemeinen kann ein Workerman-Server mit 24 GB gleichzeitige Verbindungen unterstützen.

Die Anzahl gleichzeitiger Anfragen ist durch die CPU-Verarbeitungskapazität des Servers begrenzt. Ein 24-Core-Workerman-Server kann einen Durchsatz von 45 W pro Sekunde (QPS) erreichen Codequalität.

Hinweis

Event oder Libevent-Erweiterung müssen in Szenarien mit hoher Parallelität installiert werden. Darüber hinaus muss der Linux-Kernel optimiert werden, insbesondere die Begrenzung der Anzahl der von einem Prozess geöffneten Dateien.

Stressmessdaten

Hier wird nur die QPS-Datenreferenz der Workerman-Stressmessung bereitgestellt.

###Testumgebung:

System: Debian 6.0 64-Bit

Speicher: 64G

CPU: Intel( R: Benchmark

Geschäft: Hallo-String senden und zurücksenden

###Normaler PHP-Stresstest (Version 5.3.10)

Kurze Verbindung (jede Anfrage schließt die Verbindung nach Abschluss und Aufforderung, beim nächsten Mal eine neue Verbindung herzustellen):

Bedingungen: Das Stresstestskript öffnet 500 gleichzeitige Threads, um 500 gleichzeitige Benutzer zu simulieren, jeder Thread stellt 10 W-mal eine Verbindung zu Workerman her und jede Verbindung sendet 1 Anfrage

Ergebnis: Durchsatz: 2,3 W/S, CPU-Auslastung: 36 %

Lange Verbindung (die Verbindung wird nicht nach jeder Anfrage geschlossen und die nächste Anfrage wird diese Verbindung weiterhin verwenden ):

Bedingungen: Das Stresstestskript öffnet 2000 gleichzeitige Threads, um 2000 gleichzeitige Benutzer zu simulieren, jeder Thread stellt einmal eine Verbindung zu Workerman her und jede Verbindung sendet 10-W-Anfragen

Ergebnis: Durchsatz: 36,7 W/S, CPU-Auslastung: 69 %

Speicher: Jeder Prozessspeicher ist stabil bei 6444 KB, keine Speicherlecks

Das Obige sind die Stresstestdaten der PHP5.3-Version, wenn vorhanden php7 wird die Leistung noch einmal um ca. 40 % verbessert.

###HHVM-Umgebungsstresstest

Kurze Verbindung (schließen Sie die Verbindung, nachdem jede Anfrage abgeschlossen ist, und stellen Sie beim nächsten Mal eine neue Verbindung her):

Bedingungen: Das Stresstestskript öffnet 1000 gleichzeitige Threads, um 1000 gleichzeitige Benutzer zu simulieren, jeder Thread stellt 10 W-mal eine Verbindung zu Workerman her und jede Verbindung sendet 1 Anfrage

Ergebnis: Durchsatz: 3,5 W /S, CPU-Auslastung: 35 %

Lange Verbindung (die Verbindung wird nicht nach jeder Anfrage geschlossen und die Verbindung wird für die nächste Anfrage weiterhin wiederverwendet):

Bedingungen: Stresstest Skript öffnet 6000 gleichzeitige Threads und simuliert 6000 gleichzeitige Benutzer, jeder Thread stellt einmal eine Verbindung zu Workerman her und jede Verbindung sendet 10 W-Anfragen

Ergebnisse: Durchsatz: 45 W/S, CPU-Auslastung: 67 %

Speicher: Der Speicher jedes Prozesses in der HHVM-Umgebung ist stabil bei 46 MB, ohne Speicherverluste

Das obige ist der detaillierte Inhalt vonWie erreicht Workerman eine hohe Parallelität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:So verwenden Sie WorkermanNächster Artikel:So verwenden Sie Workerman