Ein Beispiel, warum Node.js schneller ist als PHP – Teil 2

Mein letzter Post hat Belastungstests von Ghost (eine node.js-basierte Bloggingplattform) und WordPress (eine PHP-basierte Bloggingplattform und CMS) behandelt. Ich wollte die relative Leistung beider Plattformen testen um zu sehen, welche mehr aushalten kann. Der Test vergleicht nicht den Code zwischen node.js und PHP, sondern wurde stattdessen entwickelt, um zu verstehen, welche Plattform als grundlegende Blogfunktion schneller performt. Das Ergebnis meines ersten Tests war, dass Ghost 678% schneller als WordPress in ihrer „out of the box“-Konfiguration lief. Der Test und die Ergebnisse haben zu interessantem Dialog geführt und dem Vorschlag vieler, einen weiteren Test mit einer Opcode-Cache für WordPress durchzuführen. Das ist also, wovon dieser nächste Blog-Post handelt.

Der Set-up

Ich habe die gleichen Server hochgefahren, die ich für meine letzte Testrunde benutzt habe, also haben wir dieselben Konfigurationen wie im ersten Test. Für die folgenden Tests bleibe ich bei Apache als Webserver für beide, Ghost und WordPress. Dazu kommt eine APC-Opcode-Cache ( Anweisungen wie, findet ihr in diesem Blog-Post ). Es war ziemlich einfach APC zu installieren und zum Laufen zu bringen und es hat definitiv einen netten Unterschied bei der Performance von WordPress gemacht.

Die Ergebnisse

So wie zuvor wurden die Plattformen mit Siege belastet. Um die WordPress-Baseline nochmal ins Auge zu fassen, habe ich einen Belastungstest auf Apache + WordPress, zuerst aber ohne APC-Opcode-Cache, laufen lassen. Diese Ergebnisse werden hier gezeigt.

apache

Apache+Wordpress-NoCache-HeavyLoad

Wordpress-Heavy-Load-CPU

CPU utilization during Apache + WordPress load test.

Dieser Belastungstest ergab eine 100% CPU-Auslastung, genauso wie wir es in meinem ersten Blog-Post gesehen haben. I habe Apache + Ghost noch einmal getestet, damit wir die Grundkonfigurationen miteinander vergleichen können, und habe die Ergebnisse hier aufgeführt.

Apache+Ghost schwere Belastungs-Testergebnisse.

CPU-Auslastung während Apache + Ghost beim schweren Belastungstest.

Wie erwartet hat Ghost einen viel höheren Transaktionsdurchsatz  – 654% mehr als WordPress. Jetzt geht es aber erst richtig los. Mit der Konfiguration PHP für APC, Apache neu gestartet und den Belastungstest erneut durchgeführt. Hier sind die Ergebnisse:

Apache+WordPress + APC schwerer Belastungstest – Ergebnisse.

Das schaut schon viel besser für WordPress aus, eine Verbesserung von ~159% im Durchsatz gegenüber WordPress ohne Opcode-Cache. Transaktions-Reaktionszeiten waren ebenfalls viel besser und zeigten eine Verminderung von ~70% in der kürzesten Reaktionszeit und ~63% in der längsten Reaktionszeit. Das ist ein guter Leistungsschub wenn man sich überlegt wie wenig Aufwand es ist APC zu installieren und zu konfigurieren. Für die Neugierigen unter uns habe ich einige Screenshots eingefügt die die wichtigsten Cache-Metriken zeigen (man beachte die hohe Cache-Hit-Rate)…

Die verbesserten Zahlen in WordPress sind durchaus beeindruckend, es bleibt jedoch Fakt, dass Ghost die Belastung besser als WordPress verarbeitet hat. Die Ergebnisse in diesem Test zeigen Ghost, wenn man sich den gesamten Durchsatz anschaut, immernoch mit einer Führung von ~190% über WordPress, ~51% schneller bei der kürzesten Reaktionszeit und ~80% schneller bei der langsamsten Reaktionszeit. Es ist auch wert zu erwähnen, dass sich die CPU-Auslastung mit der Opcode-Cache während dieses Tests nicht verringert hat. Die Auslastung blieb bei 100% für die gesamte Dauer des Tests, obwohl sich Durchsatz und die Reaktionszeiten verbessert haben.

Und bei leichter Belastung?

Es ist auch interessant zu wissen, wie unterschiedlich die Plattform-Reaktionszeiten unter leichter Belastung aussehen. Die folgenden Screenshots zeigen alle eine Belastung von 10 gleichzeitigen Nutzern in Gruppen, die 5 Sekunden voneinander getrennt sind. Die Kombination von Apache und Ghost ist schnell und setzt den Standard für die Transaktions-Reaktionszeit mit .01 Sekunden für die schnellste Transaktion und .07 Sekunden für die langsamste Transaktion.

Apache+Ghost leichte Belastungstestergebnisse.

Apache und WordPress ohne Opcode-Cache (unten gezeigt) ist durchaus respektabel  mit .20 Sekunden für die schnellste Transaktion und .66 Sekunden für die Langsamste. Das ist jedoch immer noch 1900% und 842% schlechter als Ghost. Die Prozentzahlen erscheinen sehr hoch, aber die Seiten laden trotzdem sehr schnell.

Apache+WordPress leichte Belastungstestergebnisse.

Mit der APC-Opcode-Cache, laden Seiten in der Apache- und WordPress-Kombination unter leichter Belastung sogar schneller. Man kann unten sehen, dass die schnellste Transaktion nur .07 Sekunden dauerte und die Langsamste .25 Sekunden. Das ist eine beachtliche Verbesserung in der Geschwindigkeit. Es ist zwar immer noch langsamer als Ghost’s Reaktionszeiten, aber bei diesen Geschwindigkeiten merkt keiner einen Unterschied.

Apache+WordPress + APC leichte Belastungstestresultate.

Fazit

Einer der großen Unterschiede zwischen diesen beiden Plattformen ist, dass Ghost als eine reine Bloggingplattform entwickelt wurde und heutzutage weniger Features als WordPress umsetzt. Ich liebe die Funktionalität, die WordPress bietet, aber wenn es um Bloggingplattformen mit einer hohen Durchsatzrate geht, glaube ich, dass Ghost ziemlich schwer zu schlagen ist. Es ist egal, welche Programmiersprache für ein Projekt benutzt wird, es wird immer guten und schlechten Code geben. Damit meine ich Codes, die effizient und effektiv sind (gut) versus Codes, die ressourcenschwer und potenziell fehlerhaft sind (schlecht). Wenn bei euch eine Applikation nicht so läuft, wie ihr das wollt oder wie das Geschäft es benötigt, dann ladet euch AppDynamics kostenlos herunter und findet heraus, was das Problem ist. Dieser Artikel wurde aus dem Englischen übersetzt. Den originalen Text finden Sie hier: http://blog.appdynamics.com/nodejs/example-node-js-faster-php-part-2/