Artikel vom 10. November 2009

Performance in WordPress: Cronjobs begutachten und bereinigen

Cronjob

Seit der Version 2.1 ist WordPress in der Lage, angelegte Cronjobs nativ, also losgelöst von Drittapplikationen, auszuführen. Diese großartige Funktionalität, wiederholte Aufgaben direkt im Blog-System zu hinterlegen und zu verwalten, wird von Plugin-Entwicklern gerne und oft genutzt – Web-Hoster und externe Cronjob-Anbieter stellen für Blogger keine lästige Abhängigkeit mehr dar. Doch “Leichen” in der Cronjob-Kartei bedeuten auch Risiken.

Ein Mysterium: Cronjobs unter WordPress
Wie Cronjobs in WordPress zu potentieller Gefahr mutieren können, ist auf den ersten, oberflächlichen Blick nicht ersichtlich. Eine winzige Portion Fachwissen schafft die nötige Abhilfe und hilft zum Verständnis: Bei wirklich jedem Aufruf der Blogseiten prüft WordPress im Hintergrund, welche systematische Tasks angelegt sind und zu welchen Zeiten sie ausgeführt werden sollen. Simple Definition dieser Funktionsweise: Der Besucher des Blogs stößt die anstehenden Cronjobs an.

WP-Control für WordPress Cronjobs
Unter “Werkzeuge > Control” niestet sich das Tool ein

Und da jeder Seitenaufruf sich um die Prüfung und die Ausführung der vom System und den Plugins gespeicherten Aufgaben kümmert, sollte die Liste der Cronjobs so klein wie möglich gehalten werden. Dabei ganz wichtig zu beachten: Dort möglichst keine Duplikaten, keine Tasks von längst entfernten Plugins.

Wiederholte Aufgaben einsehen und verwalten
Das WordPress Plugin WP-Crontrol gewährt eine ausführliche Einsicht unter die Haube des Cronjob-Mechanismus und listet vorrätige Aufgaben detailliert auf. In der Standard-Auslieferung bringt das Blogsystem bereits 3 Einträge mit (wp_version_check, wp_update_themes, wp_update_plugins), die dafür Sorge tragen, den Blog-Administrator zeitnah auf eventuell existente Aktualisierungen des WP-Kerns und der installierten Erweiterungen zu informieren. Diese bitte unberührt lassen, sind aber auch notfalls schreibgeschützt.

Deaktivieren, bereinigen, clean
Sonstige Cronjobs in der Liste stammen von ehemaligen oder eben aktuellen Erweiterungen wie Plugins und Themes. Die Amtspflicht des Administrators an dieser Stelle: Liste auf mögliche “Leichen” und “Wiederholungstäter” durchschauen. Effizienter Tipp: Aktive Plugins deaktivieren, Einträge aus der Tabelle mit Cronjobs löschen (Standard-Items ausgenommen), notwendige Plugins wieder in Betrieb nehmen. In diesem Schritt werden Cronjobs von aktiven Plugins erneut initialisiert, so dass die Liste nur intakte Werte aufweisen müsste. Doppelte, unbrauchbare Daten landen in Nirwana – eine Erleichterung für WordPress, da gleiche Jobs nicht mehrfach aufgerufen werden müssen. Der Aufruf der Todos mit nicht existenten Zielen entfällt und bringt spürbare Performance.

Aufgeräumte Liste der Cronjobs in WordPress
Aufgeräumte Liste der Crontabs in WordPress

Fazit
Im Laufe der Zeit verschlucken sich die Plugins gern – mehrere Instanzen in der Cronjob-Tabelle ist die resultierende Bilanz. Beim Deinstallieren der Erweiterungen “denkt” kaum ein Plugin an das pflichtbewusste Aufräumen der initialisierten Aufgaben – kann ebenfalls passieren. Daher die Empfehlung: Der Blog-Administrator sollte alle 3 – 4 Monate, je nach Plugin-Aktivität im Backend, die Auflistung der Cronjobs kritisch unter die Lupe nehmen und Parasiten mit einfachen Klicks eliminieren.

Sergej Müller

[Der Autor] Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das weltberühmte und patentierte SEO-Plugin für WordPress-Blogs.

Social Werkzeuge

10 Kommentare zum Artikel

262 Tage zuvor | #1 Thorsten

Guter Tipp … vielen Dank dafür. Bei mir sind es 6 Stück .. also OK :)
Ein kleiner Hinweis, da es sonst vielleicht zu Verwirrung führt: das Plugin heisst WP-Crontrol also Cro.. und nicht WP-Control.
Viele Grüsse
Thorsten

Thorsten
262 Tage zuvor | #2 Sergej Müller

Thorsten, hast du Recht. Hab mich um einen Buchstaben verschrieben. Vielen Dank.

Sergej
262 Tage zuvor | #3 Heiko

Hallo Sergej,

vielen Dank für den Tipp. Habe seit einiger Zeit mit einem sehr langsamen Blog zu kämpfen und finde den Fehler nicht. Die Seite lädt sehr lange bevor sich der Inhalt aufbaut.

Cronjobs hätten wirklich ein logischer Grund dafür gewesen sein können, aber das Plugin listet nur 3 Jobs auf. Das kann es also nicht sein.

Hast du vielleicht noch mehr Tipps zu Performance vor dem eigentlich Aufbau der Seite?

Heiko
262 Tage zuvor | #4 Lazy

sehr guter Tipp, kann ich mich Thorsten nur anschließen.

Lazy
262 Tage zuvor | #5 Sergej Müller

@Heiko
Es können zig Faktoren dafür verantwortlich sein. Ich würde mit dem Abschalten der Plugins anfangen…

Sergej
253 Tage zuvor | #6 Lazy

eine sache wie wp-crontrol sollte irgendwann in den wp core einfließen, find ich..

ps: gibt es eigentlich eine möglichkeit, die cronjobs von wp / plugins per crontab erledigen zu lassen (?)

Lazy
253 Tage zuvor | #7 Sergej Müller

@Lazy
Ich vermute ganz stark, wenn die Liste der Cronjobs jedem ohne jegliche Plugins zugänglich wäre, könnte unbewusst viel Unsinn getrieben werden. Aber kommt vielleicht noch, wie die in WordPress 2.9 eingeführt DB-Repair-Funktion zeigt.

Sergej
253 Tage zuvor | #8 Lazy

Hi Sergej

vermutlich hast du recht, war nur so eine spontane Idee, denn per Cronjob (richtigem vom Server aus) fände ich es eigentlich eleganter, auch wenn es WP natürlich seit einiger Zeit besser gelöst hat.

Mal sehen was so kommt, bin eh immer neugierig und interessiert, was sich bei WordPress so tut ;)

Liebe grüße & danke für die Antwort

schönes WE!

Chris

Lazy
13 Tage zuvor | #9 Jens Berger

Ja, wp-control ist eine gute Sache. Die Ursachen liegen aber wirklich in den Plugins, wo sonst sollte man auch bei WordPress suchen.

qTranslate arbeitet nur mit Super Cache gut zusammen. W3 Cache macht Probleme. Wir arbeiten gerade an Domain http://www.bastgen-berlin-immobilien.com, die im Vergleichzu anderen wahnsinnig langsam ist.

Ich rate auch allen, daneben die .htaccess-Datei anzusehen. Hier bleiben von bsp. W3 Cache nach der Deinstallation die Einträge liegen.

Sergej. Wir hätten interesse an einen Blick vom Fachmann. Sogern Zeit da ist und der Preiss stimmt, würde es mich sehr interessieren.

Das Bild-Optimierungstool ImageOptim für PNG-Dateinen gibt es nur für Mac. Kennst Du auch eines für den PC ?

Jens Berger
13 Tage zuvor | #10 Sergej Müller

Hi Jens.

Externe Aufträge nehme ich seit einer Ewigkeit nicht mehr an, dafür fehlt mir die Zeit. In der Windows-Welt kenne ich mich nicht wirklich aus, es existieren jedoch Online-Tools, die nicht selten besser optimieren, als Desktop-Tools: punyPNG und Smush.it.

Sergej Müller

4 Verlinkungen auf den Artikel

› Webmaster, Security und Technik Blog

› WordPress Crons löschen – bueltge.de [by:ltge.de]

› SoftHelp » Blog Archive » 20 x Statistik für WordPr [...]

› 20 x Statistik für WordPress & Co. | Oberlehrer

Kommentar verfassen