WordPress als Speicherfresser

Ein wenig provokant der Titel, aber ganz von der Hand zu weisen ist es nicht. Mit jeder neuen WordPressversion wächst der Umfang dieses CMS, da die Entwickler natürlich vielen Nutzern möglichst entgegen kommen möchten, was den Funktionsumfang angeht. Dadurch geht aber viel Performance flöten.

Ich freu mich schon auf den Tag, an dem ein abgespecktes WordPress “auf dem Markt kommt”, dessen Funktionsumfang durch Core-Plugins aufgestockt werden kann. So hat man immer nur das, was man wirklich braucht.

Jedenfalls schrieb Frank Bueltge heute über das Plugin namens WP-Memory-Usage von Max Rabe.Das Plugin zeigt einem an, welche PHP-Version man nutzt, das maximale Memory-Limit und den derzeitigen Verbrauch. Zu Erklärung: die ganzen Funktionen von WordPress, die man so in Benutzung hat, verbrauchen nicht nur Webspace, sondern auch Arbeitsspeicher. Vom Hoster wurde ein dazu ein bestimmtes Kontingent zur Verfügung gestellt (meist 32MB).

Der erste Versuch das Plugin auszutesten scheiterte am bereits überfüllten Speicher. Die Fehlermeldung war schon seit einer Weile im Dashboard sichtbar, aber ich hatte mich nicht weiter drum gekümmert, die meisten Widgets dort benötige ich ja nicht mal (WordPress News usw.), allerdings wurde mir auch das gewünschte Plugin angezeigt, sondern folgende Beispielfehlermeldung:

Fatal error: Allowed memory size of 654321 bytes exhausted (tried to allocate 12345 bytes) in /srv/www/user/bla/blub/file.php on line 123

Die FAQ von WordPress-Deutschland ist dabei sehr hilfreich gewesen: Es lag an einer fehlerhaften Sprachdatei. Ich habe WP deshalb wieder auf Englisch umgestellt und so konnte mir das Plugin endlich eine 87%ige Auslastung anzeigen. Oha!

Also hab ich  zuerst geschaut was alles weg kann. Derzeit habe ich 20 aktive Plugins, imho sind das nur die nötigsten (na ja eins, weils bequem ist) aber vorne im Dashboard ist ja noch Abbaumöglichkeit.  Durch einen Tipp aus dem deutschen WordPressforum, wie man die Dashboardperformance steigern kann, öffnete ich /wp-admin/includes/dashboard.php und kommentierte alles unerwünschte aus (nicht die eleganteste Lösung, da beim nächsten Update schon wieder weg). Das brachte schon ein paar Prozentpunkte (76% bei 32MB), weil ja nicht erst in der Weltgeschichte umhergesucht werden muss, ob neue Nachrichten per RSS vorliegen.

Anschließend befolgte ich noch Franks Rat und probierte aus, ob ich nicht ein bisschen mehr Speicherplatz bekommen könnte.

Nun steht

define('WP_MEMORY_LIMIT', '96M');

in meiner wp-config.php und die Auslastung liegt nur noch bei 26%. Dennoch sollte man ein Auge drauf haben.

Habt ihr weitere Vorschläge? Wo liegt bei euch die Auslastung?

12 Comments

  1. Auf jeden Fall im grünen Bereich. Ich würde gern wissen, was unsere WPs so grundlegend unterscheidet, tippe dabei mal auf das Galerie-Plugin und dieses StarRating.

    Wie viele Plugins hast du in Benutzung?

  2. bs_de says:

    ich hab Glück und vom Provider 64MB zur Verfügung. Davon sind laut dem von Dir empfohlenen Plugin gerade 27% in Gebrauch. Also noch im grünen Bereich würde ich sagen…

  3. phpinfo(); teilt mir mit, dass das memory_limit 32MB sind. Also kann ich den Befehl aus wp-config. auch wieder herausnehmen.

    Nur, was bringt der Befehl denn dann? Warum gibt es ihn überhaupt, wenn man damit ja doch nichts ändern kann?

  4. bs_de says:

    aktiv sind 17. habe keine Ahnung, ob das viele oder wenige sind…

  5. Kim says:

    Man sollte bei der Verwendung der Konstantendefinition define(‘WP_MEMORY_LIMIT’, ’96M’); auf jeden Fall darauf achten, dass das Plugin, welches hier beschrieben wird, die Prozentzahl aufgrund dieses Limits, was man per Konstante vorgaukelt, berechnet. Wenn der Hoster in der php.ini ein kleineres Limit für die Scripte eingestellt hat, z.B. memory_limit = 32M zeigt das Plugin trotzdem 96 MB als obere Grenze an.

    Wieviel Speicher einem der Hoster tatsächlich zugesteht, findet man mit einer einfachen PHP-Datei heraus, die einfach folgende Befehlssequenz enthält:

    hier wird einem dann unter memory_limit das vom Hoster eingestellte Limit angezeigt, welches man sinnvollerweise in der wp-config.php nicht überschreiten sollte.

  6. Kim says:

    Args, die Befehlssequenz hat er mir nun verschluckt…
    der Befehl lautet:

    phpinfo();

  7. Kim says:

    Im Grunde würde das oben funktionieren, wenn die Hoster entsprechend lasch in ihrer PHP-Konfiguration vorgehen:

    Mit der Konstante setzt man das memory_limit höher, wenn verschiedene Faktoren zutreffen (siehe About WP_MEMORY_LIMIT)

  8. querverweis says:

    WordPress Fatal error: Allowed memory size exhausted…

    Fatal error: Allowed memory size of 328 bytes exhausted […]
    Mit exakt dieser Fehlermeldung durfte ich mich in den letzten Tagen seit dem ich das WordPress-Update auf 2.8 vollzogen habe herumschlagen. Genau genommen, hat es mich nicht weiter gestört; …

  9. Ich habe die leidvolle Erfahrung auch gemacht. vor allem mit der Version 2.8.x
    Generell aber kann man wohl sagen, daß eine riesige Masse an Speicher durch die deutschen Übersetzungen verursacht werden. Das sehe ich ganz deutlich einmal an WordPress selbst, (bei Umstellung von DE auf EN von 95% auf 72% runter). Ebenso bei meinem Kontaktformular-Plugin, dem großartigen cforms von DeliciousDays (einem ebenso großartigen Blog), und bei NextGenGallery… die alle eine recht umfangreiche Übersetzungsdatei haben.

    Schade… das macht echte Probleme. Aber immer auf der Version 2.7.1 hängen bleiben geht ja auch nicht… und monatlich viel mehr Geld zu zahlen, nur damit WordPress läuft.. hmm….

  10. Hallo zartgesotten,
    ein interessantes Wortspiel 🙂

    WordPress habe ich ja seither auch auf Englisch und hab mal geschaut, NextGen ist auch auf Englisch bei mir. Ist nur doof für solche Nutzer, die kein oder nur kaum Englisch beherrschen.
    Irgendwo ist es ja logisch: WordPress hat inzwischen so viele Funktionen, um auch ja jeden Nutzer zufriedenstellen zu können, weil jeder irgendwie andere Anforderungen stellt, da stößt man irgendwann an seine Grenzen. Gerade, weil ja alles datenbankbasiert ist.
    Ich schätze, man muss zu einer minimalistischen Form finden. Oder versuchen kleine Plugins direkt ins Theme einzubauen (wenn es z.b. um irgendwelche Linkerweiterungen geht usw.)

  11. Carsten Friedrich says:

    Du kannst wirklich stolz auf dich sein, das sieht wirklich klasse aus, gut gemacht 🙂

  12. Da muss ich mich meinem Vorredner anschließen. Top Umsetzung!

Leave a Reply

Your email address will not be published. Required fields are marked *