Ich bin gespannt, ob jemand versucht hat, den Bootstrap-Prozess in Drupal zu "zwischenspeichern".
Normalerweise führt Drupal die 7 Bootstrap-Phasen bei jeder Anforderung aus, aber vielleicht könnte man auf einem bereitgestellten Produktionssystem einige oder alle davon "abschaffen"?
Mögliche Vorschläge, an die ich denke, könnten sein
- Serialisierung des Bootstrap-Status und Einfügen in den Memcache
- Ein Skript könnte einen Patch für bootstrap.inc generieren, der bestimmte Informationen in die Datei fest codiert.
- Ich glaube, David Strauss hat versucht, einen Drupal mit Bootstrap auf libevent am Laufen zu halten.
- Andere Verrücktheit?
Welche Versuche gibt es und welche sind als (etwas) zuverlässig bekannt?
performance
bootstrapping
Letharion
quelle
quelle
Antworten:
PHP ist eine gemeinsame Nichts-Architektur. Das hat seine Vor- und Nachteile.
Ein Nachteil ist, dass es nicht einfach ist, so etwas zu tun. Es gibt nicht viel von einem Zustand, der irgendwo gespeichert werden kann.
Ich habe einige schnelle Tests durchgeführt und wenn ich angemeldet bin, scheint der Boostrap ungefähr 17% der Gesamtzeit in Anspruch zu nehmen, und mehr als 50% davon laden tatsächlich alle .module- und .inc-Dateien. Das können Sie nicht im Memcache speichern. Außerdem scheint es nicht wichtig zu sein, ob ich Memcache oder den Datenbankcache verwende.
Ich habe versucht, einige Ergebnisse zu erzielen, wenn der Seitencache aktiviert war, aber Xhprof scheint dann keine zuverlässigen Ergebnisse zu liefern. das Ganze scheint einfach zu schnell zu sein. Aber selbst dann besteht der größte Teil darin, Init / Exit-Hooks auszuführen und Dateien zu laden, wie es scheint. Ich habe dort ein interessantes Problem gefunden: Es sieht so aus, als würde das Benutzermodul die zwischengespeicherte Seitenantwort ernsthaft verlangsamen, da es die Registrierung aufgrund des Entitätscontrollers in der .module-Datei auslöst.
Trotzdem zeigte David Strauss einige experimentelle Arbeiten in Kopenhagen, bei denen er nach dem Bootstrapping einen Speicher-Snapshot erstellte und nach dem Bereitstellen der Seite darauf zurückkam. Dafür hat er Drupal 6 benutzt. Nachdem ich mir die obigen Zahlen angesehen habe, stelle ich mir vor, dass die Leistungssteigerungen in Drupal 7 etwas geringer wären. Ein Grund dafür ist, dass die Datenbankverbindung verzögert geladen ist (und Sie können im Bootstrap ziemlich weit kommen, wenn Sie z. B. Memcache verwenden, bevor Sie die erste Abfrage ausführen müssen), und es wird eine Menge zwischengespeichert.
Was in Drupal 7 wirklich schlecht ist, ist die Renderebene mit diesen riesigen Arrays und endlosen Rekursionen und Schleifen. Das macht so ziemlich die gesamte Performance-Arbeit rückgängig, die in Drupal 7 geleistet wurde. Mal sehen, wie es in Drupal 8 aussieht, wenn Twig es in den Kern schafft.
Zuletzt zu den genannten Vorteilen. Ein großer Vorteil ist, dass Speicher-Lauch ziemlich irrelevant ist, da nach jeder Anforderung alles freigegeben wird. Ich habe viele Java-Anwendungen gesehen, bei denen die Speichernutzung ständig zunimmt und regelmäßige Neustarts erforderlich sind.
quelle
Nein, es war David Strauss, der unter https://code.launchpad.net/~fourkitchens/pressflow/6-evented mit Kargo-Event (jetzt Kellner) experimentierte, aber ich bezweifle, dass etwas Ernstes dabei herauskam.
Drupal 7 hat bereits eine Menge Bootstrap zwischengespeichert, dafür gibt es einen
cache_bootstrap
Bin. Sie können es in memcached stecken.Sie können über Bord gehen und das Laden von Code verringern, indem Sie einige / viele Drupal-Codes in C verschieben. Damien und dhthwy haben die PHP-Erweiterung unter http://drupal.org/project/drupal_php_ext erstellt. Es wird nicht viel damit gemacht. Oder HipHop machen. Ich kenne den aktuellen Stand von HipHop & Drupal 7 nicht.
Am Ende des Tages müssen Sie sich jedoch die technischen Kosten genau ansehen, um beispielsweise HipHop-Arbeit mit Drupal 7 (und all den Beiträgen!) Zu ermöglichen, und diese mit der Anmietung einiger weiterer Server vergleichen. Wenn Sie sparen können, sagen wir 5% Ihrer Server und Sie haben 100 000 Server, dann versuchen Sie es, aber sind Sie Facebook? Seien Sie vorsichtig und sparsam mit Optimierungen.
quelle
Ich habe beim High Performance Drupal-Treffen eine interessante Präsentation über doh (Dynamic Object Handler) gesehen . Kurz gesagt, er spricht davon, Drupal schnell zu booten, indem er es benutzt. Wird gegen 15:30 Uhr interessant. Kurz gesagt, Autoload auf Steroiden mit Runkit auch funktional. Qualitätssicherung um 33:00 Uhr.
quelle