Problem mit Memory_Limit im Adminbereich

  • Hallo Leute,

    ich komme derzeit nicht weiter. Es geht um das Memory_limit von Wordpress.

    Ich habe in der wp_posts ca. 50.000 Einträge. Die wp_postmeta hat 500.000 Einträge. Die habe ich soweit es geht auch schon bereinigt (Revisionen, unnötige Datensätze gelöscht, ...) - noch weniger geht nicht, weil dann mein Projekt keinen Sinn macht.

    Nun bekomme ich beim Aufruf der Seiten im Adminbereich ständig den Fehler

    Code
    [B]Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 128 bytes) in [B]/var/www/web0/html/dslregional/wp-includes/post.php on line [B]606[/B][/B][/B]

    Daraus lese ich, dass das Memory-Limit überschritten wird. "Beiträge" kann ich aufrufen - es dauert aber einige Zeit bis die Seite angezeigt wird. Meinen Recherchen nach müssten folgende Einträge in der wp-config.php etwas bringen:

    Code
    define('WP_MEMORY_LIMIT', '512M');
    define('WP_MAX_MEMORY_LIMIT','512M');

    In der php.ini habe ich ebenfalls 512M bei memory_limit eingestellt. phpinfo(); zeigt mir korrekt die 512MB an. Trotzdem erhalte ich die Fehlermeldung von oben. Bin ratlos.


    • Alle Plugins deaktivieren bringt nichts.
    • Anderes Theme bringt auch nichts

    Weiß jemand was ich machen kann? Liegt es an der zu großen Datenbank bzw. ist Wordpress für so große Datenmengen nicht ausgelegt?

    Danke für eure Hilfe. :)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ist jetzt keine richtige Antwort, die Dir weiterhelfen könnte. Nur, ich habe bisher schon mehrfach etwas von einer Erhöhung des Memory Limits gelesen und kann es leider immer noch nicht so richtig nachvollziehen, da die Datenbank bei einer Abfrage eigentlich nur durchlaufen wird, um dann nur einen einzigen Datensatz mit einigen wenigen kB zuliefern. So eine DB soll angeblich aber locker einige Millionen Datensätze aufnehmen können. Nun frage ich mich, wo die Probleme mit dem Memory Limit dabei entstehen.

  • Ich kann es mir auch nicht erklären. Ich habe die postmeta jetzt radikal auf 214.000 Einträge reduziert. Eigentlich müsste Wordpress damit keine Probleme haben. Wenn ich versuche eine "Seite" zu bearbeiten, lädt er sich tot. Genau so, wenn ich im Adminbereich alle Seiten anzeigen will.

    Liegt es vielleicht daran, dass Wordpress mit dem Typ "Seiten" nicht so gut wie mit vielen "Beiträgen" zurecht kommt? Kann doch nicht sein - ich deaktiviere alle Plugins und das Theme und trotzdem lädt er sich tot. Die Seite selbst wird aber flott geladen. Habe sogar das Wordpress-Script neu hochgeladen...keine Veränderung.

    Danke für eure Hilfe. :)

  • Das Plugin hatte ich (wie auch andere zum anzeigen des Verbrauchs) bereits installiert. Es zeigt nur 22 von 512 MB verbrauchtem Speicher. Selbst wenn ich die "Seiten" aufrufe bleibt der Wert.

    Danke für eure Hilfe. :)

  • OK: Ich komme der Lösung langsam näher. Es liegt scheinbar an der Tabelle wp_posts und daran, dass es Seiten sind. Wenn ich allen per MySQL hinzugefügten Seiten (ca. 52.000 Stück) per MySQL-Befehl den post_status auf "inherit" statt "publish" setze, funktioniert Wordpress im Adminbereich wieder tadellos - obwohl die Einträge in der Datenbank sind. Es lässt sich sogar ein Plugin (welches sonst rumgezickt hat) wieder aktivieren.

    Danke für eure Hilfe. :)

  • Wenn Du trotz Erhöhung auf 512MB immer noch die gleiche Fehlermeldung bekommst (268435456 bytes), dann kannst Du das Limit auch auf 1024MB hochsetzen, es bringt nichts. Vermutlich ist das Limit serverseitig auf 256MB beschränkt. Was sagt der Hoster dazu? Wo das Limit tatsächlich liegt, kannst Du mit dem Plugin WP System Health feststellen.

    Mal interessehalber: Darf man erfahren um welche URL es geht? Würde mir gerne mal eine Installation mit 52000 Seiten ansehen...

    PS: Du hast hoffentlich auch ausnahmslos alle Plugins deaktiviert und anschließend den Browsercache gelöscht...

    Einmal editiert, zuletzt von mfitzen (16. August 2013 um 13:42)

  • Habe mir nur mal die Zeile von der Fehlermitteilung herausgesucht, wobei line von der Version abhängig ist. In post.php on line 606 sehe ich bei Version 3.6 eine Konstruktor-Methode mit $post und einer Schleife. Die Methode wird richtig arbeiten, doch es ist ja eine öffentliche Methode, auf der so ziemlich alles zugreifen kann. Genau da geht mir mein Latein aus, weil ich nicht wissen kann, was $post bei Dir alles enthalten könnte.

  • Wenn ich allen per MySQL hinzugefügten Seiten (ca. 52.000 Stück) per MySQL-Befehl den post_status auf "inherit" statt "publish" setze, funktioniert Wordpress im Adminbereich wieder tadellos - obwohl die Einträge in der Datenbank sind.


    Da schaue ich bisher genau so wenig durch. Wenn der Fehler nur bei "publish" auftritt, würde es ja bedeuten, dass bei den Aufrufen im Adminbereich alle 52.000 in den Arbeitsspeicher geladen würden.

    Wenn ich nun 268435456 Bytes durch 52.000 Seiten teile und das Ergebnis dann noch einmal durch 1.024 Bytes, komme ich auf etwa 5 kB Content pro Seite, was durchaus eine vorstellbare Größe ergibt. Die Frage ist nur, warum werden alle 52.000 Seiten in den Speicher geladen (falls es denn wirklich so sein sollte, sei angemerkt)?

  • Wenn Du trotz Erhöhung auf 512MB immer noch die gleiche Fehlermeldung bekommst (268435456 bytes), dann kannst Du das Limit auch auf 1024MB hochsetzen, es bringt nichts. Vermutlich ist das Limit serverseitig auf 256MB beschränkt. Was sagt der Hoster dazu? Wo das Limit tatsächlich liegt, kannst Du mit dem Plugin WP System Health feststellen.

    PS: Du hast hoffentlich auch ausnahmslos alle Plugins deaktiviert und anschließend den Browsercache gelöscht...

    Serverseitig? Es ist ein VServer. Ich habe in der PHP.ini den Wert sogar auf 512 MB gesetzt. Auf noch höherer Ebene kann der Wert auch nicht eingestellt werden. Es wurden ALLE Plugins deaktiviert. Daran liegt es garantiert nicht. Ich habe sogar das Plugin-Verzeichnis in plugins_old umbenannt, damit es da garantiert zu keinen Problemen kommen kann. Zur Seite: Es ist eine, die mit einer Geo-Datenbank arbeitet. Da will ich für verschiedene Regionen/Städte statische Seiten in der Wordpress-Datenbank.

    Melewo: Ja, sieht wirklich so aus als wenn alle Seiten in den Speicher geladen werden. Wow, heute wurde zum ersten Mal die "edit.php?post_type=page" aufgerufen. Dauerte zwar ewig aber erstmals wurde sie überhaupt ohne Fehler angezeigt. Verändert hatte ich seit gestern nichts. :) Die Frage bleibt aber, warum der Aufruf so viel Arbeitsspeicherlast verursacht.

    Danke für eure Hilfe. :)

  • Ich schaue da nicht durch, habe mir zwar das Innenleben von der /edit.php etwas näher betrachtet, doch auf der Suche nach einer Datenbankabfrage für "edit.php?post_type=page" verliere ich den Überblick, den ich eigentlich bisher ohnehin nicht hatte.

  • Wo liegt denn dein Load im Durchschitt? Gibt es Fehlermeldungen in der error.log, syslog usw? Ich würde da erst mal anfangen zu schauen.

  • Serverseitig? Es ist ein VServer.

    Sorry, wir können nicht hellsehen. Davon ist in Deinem Ausgangspost keine Rede...

    Zur Seite: Es ist eine, die mit einer Geo-Datenbank arbeitet. Da will ich für verschiedene Regionen/Städte statische Seiten in der Wordpress-Datenbank.

    Hm... Okay, aber einen Link willst Du uns nicht an die Hand geben?

  • Wo liegt denn dein Load im Durchschitt? Gibt es Fehlermeldungen in der error.log, syslog usw? Ich würde da erst mal anfangen zu schauen.

    error.log und syslog habe ich nichts auffälliges gefunden. Load ist bei 1.8. Sobald ich die Übersichtsseite der "Seiten" aufrufe, verbrauchen Apache- und MySQL-Prozesse ordentlich CPU+Memory.

    @infected: Das war ein normaler Hinweis mit dem "VServer". :) Am Domainnamen liegt es auch nicht ;-)

    Danke für eure Hilfe. :)

  • @infected: Das war ein normaler Hinweis mit dem "VServer". :) Am Domainnamen liegt es auch nicht ;-)

    Nevermind... :roll:

    Ich wollte eigentlich nur mal nen Link zu Deiner Seite haben, weil ich mir gerne mal eine WordPress Installation mit 52000 Seiten ansehen würde. Den Link habe ich unabhängig von Deinem Problem angefragt...

  • Wordpress hat scheinbar tatsächlich Probleme mit vielen Seiten. Zumindest bestand das Problem bereits vor 3 Jahren (siehe http://wordpress.org/support/topic/…ny-static-pages) und wie es scheint, hat sich seitdem nichts geändert.

    Ich werde dann wohl die Seiten in eigene Post-Types umwandeln müssen. Ist es möglich Posts als Parent eine Seite zuzuweisen? Was ich möchte:

    - Zu jedem Bundesland eine Seite: domain.de/hessen/, domain.de/niedersachsen/, ...
    - Die Städte sind aktuell noch Unterseiten der jeweiligen Bundesländer ... also z.B. domain.de/niedersachsen/hannover/

    Wie bekomme ich das nun hin, dass die Städte den Typen "post" zugewiesen bekommen und trotzdem den Seiten untergeordnet sind (ohne aus den Bundesländern Kategorien zu machen)? Habt ihr Vorschläge?

    Danke für eure Hilfe. :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!