Zulässige Speichergröße erschöpft
PHP erreichte die Grenze, die es gegeben wurde und stoppte. Die Zahl in der Nachricht ist das Limit, nicht der Betrag, den Ihre Website benötigt.
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
Ein Limit, das ohne den zweiten Schritt erhöht wurde, wird nächsten Monat wieder erhöht, und die Nummer in der Nachricht sagt Ihnen nichts darüber, welcher Code verantwortlich war.
Die wahrscheinlichsten Ursachen zuerst.
Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.
| Ursache | So prüfen Sie es | Lösung |
|---|---|---|
| Ein Bild, das verkleinert wird | Der Fehler erscheint beim Upload oder auf einem Medienbibliotheksbildschirm, und die betreffende Datei ist groß. | Geben Sie der Größe genug Speicher oder Größe vor dem Hochladen. Eine Kamera JPEG kann ein Vielfaches ihrer Dateigröße benötigen, um zu dekomprimieren. |
| Eine Abfrage, die alles in ein Array lädt | Der Fehler landet in einem Archiv, einem Export oder einem Bericht - überall dort, wo posts_per_page -1 ist. | Paginieren Sie die Abfrage. Jede Zeile abrufen, um sie zu zählen, ist die häufigste Version davon im Plugin-Code. |
| Autoloaded Optionen sind groß geworden | Die Größe des automatischen Ladens wird in Megabyte gemessen. Jede Anfrage zahlt sie aus, so dass der Fehler überall erscheinen kann. | Verschieben Sie die größten Optionen aus dem Autoload. Plugins, die Protokolle oder Caches in wp_options speichern, sind der übliche Grund. |
| Das Limit ist einfach niedrig | Die Nachricht nennt ein Limit deutlich unter 256M auf einer Website mit einem gewöhnlichen Plugin-Set. | WP_MEMORY_LIMIT zu etwas Modernem erheben. Ein 40M Standard ist ein Jahrzehnt veraltet. |
| Eine Einfuhr mit jeder Zeile | Das Gedächtnis klettert stetig durch einen lang andauernden Job, anstatt sofort zu spiken. | Verarbeiten Sie in Stücken und befreien Sie jede Charge. Gedächtnis, das immer nur wächst, ist ein Job, der niemals das freigibt, was er gelesen hat. |
Schritt für Schritt zur Lösung.
Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.
Lesen Sie das Limit, das Sie tatsächlich treffen
Es gibt zwei: PHP ist selbst und WordPress ist obendrein.
php -i | grep '^memory_limit' wp config get WP_MEMORY_LIMIT
Heben Sie es genug, um die Website wieder zu laden
Das ist Triage. Es kauft Ihnen das Armaturenbrett zurück, damit Sie den nächsten Schritt machen können.
wp config set WP_MEMORY_LIMIT '256M' wp config set WP_MAX_MEMORY_LIMIT '512M'
Messen Sie die automatisch geladenen Optionen
Jede Anfrage zahlt dafür, bevor sie etwas anderes tut.
wp db query "SELECT ROUND(SUM(LENGTH(option_value))/1024/1024, 2) AS mb FROM \$wpdb->options WHERE autoload='yes';"
Finden Sie die größten Täter beim Namen
Der Anfang dieser Liste ist normalerweise ein Plugin, das etwas speichert, das es nicht sollte.
wp db query "SELECT option_name, ROUND(LENGTH(option_value)/1024, 1) AS kb FROM \$wpdb->options WHERE autoload='yes' ORDER BY LENGTH(option_value) DESC LIMIT 10;"
Bestätigen Sie den Fix unter dem ursprünglichen Limit
Wenn das Limit wieder da ist, wo es war, und die Seite, die fehlgeschlagen ist, neu laden, haben Sie die Ursache und nicht das Symptom behoben.
wp config set WP_MEMORY_LIMIT '128M'
Darum kümmert sich die Plattform.
Der Speicher wird vom Plan und nicht von einem gemeinsamen Standard bemessen, also ist der Ausgangspunkt eine moderne Zahl anstelle einer zehnjährigen, und sie gehört allein zu Ihrem Container. Das Dashboard zeigt den Speicher, den eine Site tatsächlich verwendet, gegen das, was sie hat, was die Messung ist, die diesen Fehler von einer Vermutung in eine Entscheidung verwandelt.
Häufige Fragen.
Wie viel Speicher braucht WordPress?
Warum wird in der Nachricht eine winzige Zuweisung erwähnt?
Kann ich das Limit für immer erhöhen?
Warum passiert das nur im wp-admin?
War es keiner davon?
Diese Fehler können im Browser ähnlich aussehen.