30 Dezember

WordPress und der Speicherhunger

Kategorie: Internes — Jahrgang 2009

Das WordPress 2.9.1. in den Startlöchern steht, wundert wirklich niemanden mehr, die Abstände zwischen den Aktualisierungen werden immer kürzer. Das liegt zum einen daran, das WordPress wegen seine hohen Verbreitungsgrades immer ein beliebtes Ziel von Angriffen ist und zum anderen daran, das immer mehr Features in den Kern implementiert werden. Das hat zum Nachteil, das der Speicherverbrauch, mit dem WordPress die Hardware des Servers belastet, immer größer wird. Doch das ist nur die Spitze des Eisberges.

Nachdem ich erfuhr, das ich für WP 2.9 eine MySQL Datenbank der Version 4.1.2 benötige, ich aber nur eine 4.0.25 vorzuweisen hatte, schrieb ich meinen Hoster all-inkl.com an. Der antwortete mir sehr schnell, das dies alles kein Problem wäre und ich in der Nacht vom 28.12. auf den 29.12. auf einen neuen Server umziehen würde, der eben diese Features bietet. Und so war ich angenehm überrascht, das ich am Morgen danach MySQL 5 und PHP 5 als Voreinstellung begrüßen durfte. Mein Problem mit den Sonderzeichen und der Datenbankumstellung, auf die ich vorbereitet war, habe ich ja im gestrigen Artikel bereits erzählt.

Doch was war das? Beim darstellen der Startseite: Fatal error: Allowed memory size of XXX bytes exhausted (tried to aloocate X bytes). Ein Blick auf die Speicherauslastung, die mir das Plugin WP System Health anzeigt, offenbarte das Problem. Allein die Darstellung des Backends sorgte für eine Speicherauslastung von 71%, also etwa 46 MB bei einem Serverseitig konfigurierten Speicherlimit von 64 MB. Ein Artikel bei WordPress Deutschland über dieses Problem brachte keine Linderung, denn hier geht man von einer sehr niedrigen Memory Limit (32 MB) aus, meine 64 MB sollten da eigentlich kein Problem darstellen.

Wie sich herausstellte, war ich beim Umzug von einem 32bit auf einen 64bit Server umgezogen. 64bit Systeme haben den unangenehmen Nebeneffekt, das der Speicherverbrauch sich in etwa verdoppelt, das hier die Verwaltung des Speichers mehr Platz benötigt. Die WP Installation quittierte das mit einer Mehrbelastung von rund 30%. Im Backend reichte der Speicher aus, wenngleich er mit 46MB/64MB schon recht hoch ausfiel. Beim darstellen der Startseite greifen jedoch nun alle Plugins, jQuery Erweiterungen und die Anzahl der Datenbankabfragen steigt. Folge: Der Server bricht das Darstellen ab und zeigt oben genannte Fehlermeldung.

Somit musste ich also den Spei­cher­ver­brauch redu­zie­ren. Doch wie macht man das? Die Lösung ist ein­fach und pro­ble­ma­tisch gleich­zei­tig, denn haupt­säch­lich durch das Deak­ti­vie­ren eini­ger Plugins lässt sich der Spei­cher­ver­brauch drü­cken, doch nicht jedes Plu­gin ver­braucht gleich viel Spei­cher. Je Kom­ple­xer und auf­wen­di­ger das Plu­gin, umso höher der Spei­cher­ver­brauch. Der Bro­ken Link Che­cker (2MB), Sim­ple Tags (3MB), Redi­rec­tion (2MB), Twit­ter Tools (1MB) und die Feed­Stats (0,5MB) waren bei mir die Plugins die erst­mal deak­ti­viert wur­den, doch immer noch nicht genung.

Hin­weis: Es lohnt sich immer wie­der ein­mal ein Blick in die Daten­bank zu wer­fen um auch hier Spei­cher­fres­ser aus­fin­dig zu machen. Auf­ge­blähte Log-Tabellen oder tote Ein­träge bereits dein­stal­lier­ter Plugins sor­gen für zusätz­li­che Ent­las­tung. Wer möchte kann das Plu­gin WP-Optimize nut­zen, das die Daten­bank ein wenig auf­räumt. Wie ich bei Frank Bueltge gele­sen habe, bringt WP diese Funk­tion seit der Ver­sion 2.9 bereits mit, man muss sie nur auf­wen­dig aktivieren:

Dazu öffnet man die Datei wp-config.php im Root-Verzeichnis des Blogs und fügt den Ein­trag define(‘WP_ALLOW_REPAIR’, true); hinzu und ruft das Script dann in der Adress­zeile des Brow­sers auf: http://www.meinblog.de/wp-admin/maint/repair.php

Das brachte immer­hin einen wei­te­ren MB, doch immer noch nicht genug. Ein Arti­kel des Code-Styling Pro­jekts um den Spei­cher­ver­brauch der Sprach­da­tei zu min­dern brachte noch­mal 3 MB. Dabei wird die deut­sche Sprach­da­tei offen­bar unsau­ber ver­ar­bei­tet und sorgt für einen zusätz­li­chen Spei­cher­ver­brauch. End­lich funk­tio­nierte wie­der alles! An die neuen Funk­tio­nen zu Bild­ver­ar­bei­tung, die WP 2.9 mit­bringt, war natür­lich nicht zu den­ken. Das konnte es doch nicht sein, das ich mei­nen lie­be­voll zusam­men­ge­bau­ten Blog zu kas­trie­ren muss. So habe ich mich mit mei­nem Hos­ter aus­ein­an­der­ge­setzt, der mir nach eini­gem Mail­ver­kehr dann das memory_limit auf 100 MB erhöhte. So kann ich nun wie­der alles so benut­zen, wie ich es gewohnt bin und erfreue mich zusätz­lich an den neuen Mög­lich­kei­ten der Bild­be­ar­bei­tung im Backend.

Doch ein fader Beige­schmack bleibt, Hos­ter mit einem Memory Limit von 32 oder 64 MB sind die Regel und eigent­lich kann nie­man­dem so wirk­lich vor­ge­wor­fen wer­den für das Pro­blem ver­ant­wort­lich zu sein. (Tipp: Host­eu­rope bie­tet in sei­nen güns­ti­gen Web­pack 2.0 Pake­ten ein Memory Limit von 128 MB) Der mitt­ler­weile sehr über­la­dene Kern des WP Blogs ist sicher­lich ein Grund, ebenso wie unzäh­lige und teil­weise unsau­ber pro­gram­mierte Plugins. Ich denke hier sollte das WP-Team für die Zukunft dif­fe­ren­zie­ren und nicht aus einem Blog ein CMS bas­teln (Typo3 bekommt man auf 32 MB erst gar nicht zum funk­tio­nie­ren) und sich auch ein wenig dar­auf kon­zen­trie­ren die Soft­ware schlank und schnell zu hal­ten. Die Hos­ter sollte anstatt immer neuer Ange­bote zu güns­ti­gen Preise auch etwas an der Qua­li­tät ihrer Ange­bote tun, denn 32 MB sind wirk­lich nicht mehr zeit­ge­mäß und machen eine Web 2.0 Anwen­dung mit viel AJAX und jQuery zum Spieß­ru­ten­lauf. Spart euch den nächs­ten Preis­nach­lass und hal­biert die Zahl der Kun­den je Server.

(Bild­quelle: Mixergirl/flickr.com)

18 Kommentare

  1. Danke für die Infos, vor allem das Plu­gin „WP Sys­tem Health” fand ich sehr inter­es­sant. Da ich meh­rere Blogs auf mei­nem Ser­ver am Lau­fen habe, jeweils in einer eigen Daten­bank, muss ich mal schauen, wie ich eine Gesamt­über­sicht über den Ser­ver erhalte…

  2. Wie gut dass ich nen Root-Server habe: Spei­cherli­mit wird ein­fach kurz hoch­ge­setzt wenns irgendwo eng wird und fer­tig. Klar, eigent­lich sollte hier ein­fach bes­ser pro­gram­miert wer­den (wobei das AJAX-Zeug ja ein neues Script star­tet und somit nicht am Spei­cherli­mit krat­zen sollte).

    Im Grunde sind die furcht­bar pro­gram­mier­ten Plugins natür­lich ein Haupt­pro­blem und ich hab schon bei so manch einem Plu­gin gestaunt als ich mir den Source­code ange­guckt habe — tota­ler Mist, von PHP-Frischlingen pro­gram­miert… da ist es kein Wun­der, dass da nichts mehr geht. ;)

  3. Mir hat das ursprüng­li­che Kon­zept von Word­Press sehr gut gefal­len: Will man mehr, benö­tigt man ein Plug-In.

    Inzwi­schen sind viele Funk­tio­nen schon in WP inte­griert, was gene­rell nicht schlecht ist.

    Doch ich hoffe das die wei­tere Ent­wick­lung nicht zu sehr auf Fea­tures abzielt. Der Spei­cher­be­darf ist jetzt schon für viele am Limit.
    Es gibt schon erste For­de­run­gen nach einem WP-Light!

    Bin gespannt wie es sich weiterentwickelt…

  4. Danke Dir für den aus­führ­li­chen Bericht … gut zu wis­sen. Bei mir läuft die neue Ver­sion nicht ganz rund aber noch ertrag­ba­ren Rah­men. Ich hoffe es wird bes­ser mit den nächs­ten Updates und Deine Worte wer­den erhört.

  5. @Rolle: Stimmt, das Plu­gin sollte man im Hin­ter­kopf behal­ten, wenn der eigene Blog mal wie­der aus uner­klär­li­chen Grün­den streikt oder hakelt :)

    @Thomas: Stimmt als Root-Server Betrei­ber hast du natür­lich freie Hand was das Spei­cher­ma­nage­ment angeht. Grund­sätz­lich finde ich WP ja nicht schlecht, aber ich finde auch das immer mehr Sachen in den Kern gela­den wer­den, die zu Las­ten der Per­for­mance gehen, von daher finde ich funkygog’s Ansatz „WP-Light” gar nicht so abwe­gig, gerade vor dem Hin­ter­grund das man­che tat­säch­lich nur 32MB Spei­cher zur Ver­fü­gung haben. Bei Plugin’s finde ich das im Grunde nicht so schlimm, obwohl hier sau­be­rer Code wün­schens­wert wäre, aber immer­hin hat man hier noch Aus­wahl oder kann sich ganz gegen ein Plu­gin entscheiden.

    @funkygog: Ja, genauso sehe ich das auch. WP 2.9 bringt ja durch­aus schi­cke Bild­be­ar­bei­tungs­tools mit, aber sind die wirk­lich nötig? Kos­ten­lose und gute Bild­be­ar­bei­tungs­pro­gramm für die Grund­funk­tio­nen gibt es wie Sand am Meer: Bei­spiel IrfanView.

    @stoffel: Das hoffe ich auch, aber unter­schwel­lig ver­mute ich das sich das Pro­blem noch ver­schär­fen wird. Die Hoff­nung aber bleibt :)

  6. @ fun­ky­gog: Ich hoffe mal, dass uns ein WP-Light erspart bleibt. Ins­be­son­dere für die Plugin-Entwickler wird das nur zu Chaos füh­ren, wird doch jetzt schon die API von Ver­sion zu Ver­sion schlech­ter doku­men­tiert. Dazu gibt es ja now WordPress-MU, womit die Plugins auch noch kom­pa­ti­bel sein soll­ten, da sonst das Gejam­mer los­geht. Wenn ich dann um ein Plu­gin zu schrei­ben drei WP-Varianten instal­lie­ren und aktua­li­sie­ren muss und das Plu­gin auf jeder Platt­form tes­ten, dann würde mir gewal­tig die Lust ver­ge­hen. Zumal das ein rie­si­ges Ver­wirr­spiel für die Nut­zer geben dürfte: Wel­ches Plu­gin funk­tio­niert denn nun wo? Dann lie­ber das eigent­li­che Word­Press wie­der leich­ter machen, ich ver­stehe sowieso nicht, warum die Erwei­te­run­gen wie die Bildbearbeiten-Funktion fest ver­an­kert ist und nicht wie die­ses dümm­li­che „Hello Dolly” als Plu­gin mit drin ist — gern auch stan­dard­mä­ßig akti­viert, nur eben abschaltbar.

    @ Robert: Wie oben schon geschrie­ben — WP-Light halte ich für einen schlech­ten Ansatz, ich bin eher für die Aus­la­ge­rung von Fea­tures in Plugins. Bevor man aber meckert sollte man immer beden­ken, was denn nun wirk­lich auf den Spei­cher schlägt. Ein Bildbearbeitungs-Tool das nicht genutzt wird ver­braucht beim Auf­ruf der Seite kei­nen Spei­cher. Ebenso irgend­wel­cher AJAX-Schnickschnack. Wobei man sich wirk­lich fra­gen sollte, wie du in dei­nem Arti­kel schon geschrie­ben hast, ob 32 MB Spei­cher in Zei­ten von 64 Bit-Systemen nicht ein­fach obso­lete ist. Büro­rech­ner wer­den inzwi­schen schon quasi als Stan­dard mit 4 GB Arbeits­spei­cher ver­kauft, 32 MB hört sich irgend­wie nach Win­dows 95 an.

    Was aber spe­zi­ell die Bild­be­ar­bei­tungs­funk­tion angeht muss ich dir wider­spre­chen: Aus­schnei­den ist mit Irfan­view fast schon eine Kunst und beson­ders bei Net­books und auch zum Bei­spiel bei Black­ber­rys ist eine sol­che Funk­tion extrem prak­tisch, da die Rechen­leis­tung vom Ser­ver über­nom­men wird.

  7. @Thomas: Auf Black­ber­rys und Net­books gebe ich Dir recht, natür­lich. Mit dem Aus­schnei­den habe ich bei Irfan keine Schwie­rig­kei­ten, viel­leicht ist das auch Gewöh­nungs­sa­che. Aber was nützt die Funk­tion, wenn ich beim aus­füh­ren eine Feh­ler­mel­dung erhalte, womit der ein­fa­che Blog­ger nichts anfan­gen kann? In die­sem Sinne finde ich die Idee des „Zuschal­tens” ähnlich wie einem Plu­gin sehr sinn­voll. Viel­leicht auch eine Abfrage, wie­viel MB Spei­cher denn nun vor­han­den ist um ent­spre­chend vor­her zu warnen.

    Ganz davon abge­se­hen gebe ich Dir recht, 32 MB ist wirk­lich sehr ärmlich, gerade auf einem 64bit Sys­tem. Aber die meis­ten Hos­ter ver­su­chen natür­lich, mög­lichst viele Kun­den auf einen Ser­ver zu packen, die Ver­dopp­lung des Spei­chers für Kun­den hal­biert dann auch im schlech­tes­ten Fall die Anzahl der mög­li­chen Kunden.

  8. Nun, da kom­men wir auf ein ganz ande­res Pro­blem zu spre­chen: Ist Word­Press dafür gedacht, dass jeder Technik-Noob einen eige­nen Blog betreibt, ohne die­sen pro­fes­sio­nell ein­rich­ten zu las­sen? Immer­hin gibt es da ja doch diverse Dinge zu beach­ten, bei­spiels­weise die Schlüs­sel die in der wp-config.php ein­ge­tra­gen wer­den soll­ten usw.! Ich denke mal, wer die Feh­ler­mel­dung nicht ver­steht, der sollte auf einen der übli­chen Blog-Hoster aus­wei­chen oder sich den Blog pro­fes­sio­nell ein­rich­ten las­sen — und der Profi weiß dann auch, wo man anstän­di­gen Webs­pace bekommt. ;)

  9. Uff das hätte ich jetzt nicht gewusst das man da auch noch eine andere Daten­bank haben muss die höher ist. Bloss gut das ich nicht alle Ups autom­tisch mitmache

  10. @Thomas: Immer­hin ist das eini­ger­maßn doku­men­tiert. Aber prin­zi­pi­ell hast du natür­lich recht, obwohl ich die Folge: Kos­ten­lose Blog­an­bie­ter fast alle nicht lei­den kann, da ver­kommt eine Kom­men­tarab­gabe zum Spieß­ru­ten­lauf. Pro­fes­sio­nell ein­rich­ten las­sen = Bares Geld, ob man davon den eif­ri­gen Schrei­ber über­zeu­gen kann? In Zei­ten in denen Bau­markt­ket­ten ein­la­den alles, aber auch wirk­lich alles sel­ber zu machen, sollte man sich nicht wun­dern, wenn das kaum ein macht.

    @Jan: Ja, die Auto­ma­tik und ihre Tücken. Immer­hin hätte die WP beim Update dar­über infor­miert, das deine Daten­bank nicht passt. Viel­leicht ein klei­ner Wehrmutstropfen.

  11. Klar, die meis­ten kos­ten­lo­sen Blog­an­bie­ter sind Mist, das liegt aber auch nur daran, dass die Leute den Mist neh­men. Zudem gibt es auch einen Anbie­ter der WordPress-Blogs anbie­tet. Wie der heißt kannst du dir den­ken und dort dürfte es wohl kaum Pro­bleme mit dem Spei­cher geben. Dass sich kei­ner einen Blog für Geld machen lässt ver­steh ich natür­lich, aber dar­auf wollte ich weni­ger raus. Viel mehr dar­auf, dass man sich auch nicht im Bau­markt beschwe­ren darf, wenn man alle Bret­ter krumm sägt weil man mit der Profi-Säge nicht umge­hen kann ;)

  12. Also die kos­ten­los Blog­an­bie­ter nehme ich auch nicht, da ist es bei den Kom­men­ta­ren wie Robert sagt ein Spießrutenlauf.

    Was Tho­mas aber wie­der sagt das sich kei­ner einen Blog machen lässt für Geld ist falsch. Es ist nur nicht so ein­fach jeman­den zu fin­den der die­ses auch zuver­läs­sig macht, weni­ger wegen den Tem­pla­tes son­der eher in der Hin­sicht auf den Ein­bau ver­schie­de­ner diver­ser Pluggins. Ich habe da mal gesucht, Ange­bote für Tem­pla­tes für fast 1000€ ja, aber kei­ner konnte so rich­tig Pluggins instal­lie­ren in der Form wie ich es wollte

  13. Wie stellst du dir denn den Ein­bau von Plugins vor? Im Grunde gibt es da ja nicht gerade viel ein­zu­stel­len und grund­le­gend anders zu machen, von eini­gen spe­zi­el­len Plugins mal abge­se­hen, die dann aber auch meist ziem­lich schlecht pro­gram­miert sind. Die Gele­gen­heit einen Blog gegen Geld zu machen hatte ich bis­her noch nicht. Ich setze zwar Word­Press bei mei­nen Kun­den (übri­gens für einen ange­mes­se­nen Preis, nicht für 1000 Euro) ein, nutze es dann aber als Con­tent Manage­ment Sys­tem für eine Web­site und nicht als rich­ti­gen Blog.

  14. Hi Tho­mas du kannst dich ja mal gern über die Web­seite bei mir mel­den, dann kann man das per Mail besprechen

  15. Ich denke auch, das grund­le­gende und wirk­lich finan­zi­ell loh­nens­werte sind der Betrieb und die Instand­hal­tungs des Blogs. Sprich: Umbauen des Theme’s nach Kun­den­wün­schen, modi­fi­zie­run­gen, Ein­bau von Plugins oder jQuery, Pflege von Updates, Siche­rung der Daten­bank, SEO-Optimierung und, und und… von daher könnte ich schon vor­stel­len, das ein monat­lich finan­zier­tes Modell funk­tio­nie­ren könnte. Wenn du genug Geld hast kannst du sogar Leute bezah­len die für dich Bloggen :)

  16. @ Jan: Ohne Impres­sum bzw. E-Mailadresse / Kon­takt­for­mu­lar auf dei­ner Seite kann ich mich nicht melden ;)

    @ Robert: Monat­li­che Zah­lung würde ich nie machen. Schnei­det man sich als Web­de­si­gner nur ins eigene Fleisch. Sowas geht nach Auf­wand, denn die Leute den­ken „Ich zahl jeden Monat 10 Euro, also muss der sprin­gen wenn ich hüpf sag”. Zwar kann man über ein monat­li­ches Modell im Sinne von „Back­ups + Updates” nach­den­ken, aber ich per­sön­lich hab wenig Lust die Ver­ant­wor­tung für die Daten­si­che­rung zu über­neh­men. Dafür ist es mir schon zu oft pas­siert, dass ein Datenbank-Backup defekt war — viel­leicht erin­nerst du dich noch an den Hacker­an­griff auf Schwarz­den­ker, da hatte ich exakt die­ses Problem…

  17. @Thomas: Keine täg­li­che Siche­rung? Ich finde ein Plu­gin für WP bei­spiels­weise sehr prak­tisch, das im Hin­ter­grund per Cron die Daten­bank 1x täg­lich sichert, 30 Tage spei­chert und dann ent­spre­chend löscht. Aber gut, das ist natür­lich keine Garan­tie, dazu müsste man auch Hard­ware­re­dun­dant arbei­ten. Mit dem monat­li­chen Bei­trag gebe ich Dir natür­lich recht, den klei­nen Fin­ger rei­chen und die ganze Hand neh­men. Auf das sich die unzäh­li­gen „mach mal” dem­nächst ihre eige­nen Sei­ten schrauben :)

  18. Hi Tho­mas ich habe mal einen neuen Blog auf­ge­setzt
    und ver­sucht alles selbst zu schaf­fen, ist zwar
    noch nicht alles so wie ich mir denke, aber danke für dein Angebot

    Ist da auch schon das neue WordPress

Schreibe einen Kommentar

(erforderlich)

(erforderlich)

Hilfe zur Kommentareingabe?

Du kannst folgende xHTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

E-Mail-Benachrichtigung bei neuen Kommentaren ? Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare via E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent bei Spontis bist.

Ein Bild von Dir? (Avatare): Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz: Wenn dein Kommentar nicht gleich erscheint, kann es sein das er im Spam-Ordner gelandet ist. Das passiert auch wenn du zuviele Links auf einmal benutzt.