it-swarm.com.de

Nginx FastCGI_Cache Vs PHP Caching

Ich habe einige Experimente mit der Caching-Leistung mit loader.io durchgeführt und einige rätselhafte Ergebnisse erhalten.

Ich war ursprünglich auf einem gemeinsam genutzten Host, der einen LAMP-Stack verwendet hat. Selbst bei aktiviertem Caching würde es nach 200 Besuchern in 1 Minute umkippen.

Ich habe ein einfaches LEMP (Nginx 1.9.12 + PHP-FPM7.0) mit 1 GB Ubuntu-Tröpfchen auf Digital Ocean eingerichtet und meine Site über (Subdomian Multisite) kopiert.

Um eine Baseline zu erhalten, habe ich das Plugin für den automatischen WP-Super-Cache mit der Caching-Option PHP eingerichtet und einen Test durchgeführt. Es hat sehr gut funktioniert, also habe ich das Maximum ausgeführt, das ich auf dem kostenlosen Plan konnte (10.000 in 1 Minute) und hier sind die Ergebnisse.

 LEMP + wp-super-cache 

Dies ist erstaunlich gut im Vergleich zu meinem gemeinsam genutzten Host, der bei einer einzelnen Anforderung niemals unter 300 ms sinken würde und bei jeder Art von Belastung Zeitüberschreitungen auftreten würde.

Alles, was ich gelesen habe, besagt, dass ich durch die Verwendung von PHP Caching in wp-super-cache eine schlechtere Caching-Leistung erhalte als durch die Verwendung von Webserver-Caching, da es einen Overhead gibt, der durch die statischen Seiten verursacht wird, die über PHP bereitgestellt werden.

Aufgeregt zu sehen, wie schnell ich meine Antworten bekommen konnte, konfigurierte ich den fastcgi_cache, um PHP Dateien zwischenzuspeichern, und deaktivierte dann das Plugin wp-super-cache.

Ich habe den Belastungstest erneut durchgeführt und hier sind die Ergebnisse:

 enter image description here 

Die Ergebnisse sind ziemlich gleich. Die erste Anfrage dauert etwas länger, aber es ist die zwischengespeicherte Antwort, an der ich interessiert bin, da dies höchstwahrscheinlich mit einigen Optimierungen optimiert werden könnte.

Aus diesem Ergebnis kann ich keinen Vorteil ziehen, wenn ich fastcgi_cache verwende, als wenn ich wp-super-cache die Zwischenspeicherung mit PHP überlasse. Das Caching von PHP ist mit Sicherheit viel einfacher, wenn es um benutzergenerierte Subdomains und zugeordnete Domains geht.

Ich bin nur auf dem freien Plan, kann also den Belastungstest nicht höher schieben, aber meine Anforderungen überschreiten 10k in 1 Minute nicht.

Dies hat mich verwirrt, da jeder einzelne Artikel, den ich darüber gelesen habe, besagt, dass die Verwendung einer Caching-Regel im Webserver erhebliche Leistungsvorteile hat, anstatt eine statische Datei mit PHP zu liefern, aber mit dieser Konfiguration, die dies nicht tut. ' Dies scheint der Fall zu sein.

Der fastcgi_cache wird direkt vom RAM bedient. Wp-super-cache verwendet PHP, um eine statische Datei von der SSD zu lesen, also sehe ich, warum es schneller sein sollte, also warum nicht?

Dies ist natürlich kein wirkliches Problem. Ich bin nur verwirrt, warum meine Ergebnisse so sind, wie sie sind, und scheine allen von mir gelesenen Leitfäden zu widersprechen.

Kann jemand Aufschluss darüber geben, warum ich diese Ergebnisse erhalte?

6
Guerrilla

Nginx kann sehr gut parallel arbeiten (PHP nicht so sehr), daher sollten Sie etwas mehr als 180 Anfragen pro Sekunde versuchen. Möglicherweise 500 oder 1000, abhängig von Ihren Serverressourcen und dem Netzwerkdurchsatz.

Der fastcgi_cache wird direkt vom RAM bedient. Wp-super-cache verwendet PHP, um eine statische Datei von der SSD zu lesen, also sehe ich, warum es schneller sein sollte, also warum nicht?

Es hängt davon ab, ob. Zuallererst hängt es von Ihrem fastcgi_cache_path ab, ob fastcgi_cache aus dem Speicher bereitgestellt wird oder nicht. Wenn es auf ein tmpfs-Mount gesetzt ist, dann ist es ja im Speicher. Wenn es auf ein reguläres Nicht-tmpfs-Verzeichnis eingestellt ist, wird es von der Festplatte geliefert.

Aber Festplatte bedeutet nicht immer die tatsächliche Festplatte :)

Wenn Sie von der Festplatte auf eine Datei zugreifen, wird sie von Linux im Arbeitsspeicher zwischengespeichert. Wenn Sie also das nächste Mal auf dieselbe Datei zugreifen, wird sie aus dem Arbeitsspeicher bereitgestellt. Aus diesem Grund sind die meisten Tests mit loader.io, Apache-bench und anderen Tools, die dieselbe Seite "hämmern", fehlerhaft. Sie alle bewirken, dass Ihr Stapel auf dieselben Dateien zugreift und diese im Speicher bereitstellt. Dies ist der Grund, warum Ihre Option "WP-Super-Cache PHP" wahrscheinlich nicht wesentlich mehr Datenträger IO verursacht als Nginx und daher bei geringer Parallelität genauso schnell zu sein scheint.

5
kovshenin