Kategorien
In eigener Sache Statistik Wordpress

WordPress SQL- und Hook-Statistiken

Warum ist WordPress eigentlich so langsam? Schließlich muss es doch nur 10 Artikel aus einer Datenbank holen und anzeigen und mehr nicht, oder? Das dürfte an sich nicht sonderlich lange dauern und tatsächlich verbringt WordPress auch die wenigsten der 200 bis 500 ms der unten angegebenen Zeit mit Datenbankabfragen.

Für die Startseite:

Stats:
2 big queries (over 1 ms) taking 6.3202381134033 ms to execute
and 98 small queries eating 10.257244110107 ms of your time.
That sums up to 100 queries in 16.577482223511 ms

Hooks:
hook: plugin_init, from start:12 ms, delta:12 ms
hook: plugins_loaded, from start:20 ms, delta:8 ms
hook: init, from start:28 ms, delta:8 ms
hook: template_redirect, from start:34 ms, delta:6 ms
hook: wp_head, from start:36 ms, delta:2 ms
hook: the_content, from start:42 ms, delta:6 ms
hook: the_content, from start:59 ms, delta:17 ms
hook: the_content, from start:69 ms, delta:10 ms
hook: the_content, from start:79 ms, delta:10 ms
hook: the_content, from start:93 ms, delta:14 ms
hook: the_content, from start:103 ms, delta:10 ms
hook: the_content, from start:114 ms, delta:11 ms
hook: the_content, from start:123 ms, delta:9 ms
hook: the_content, from start:134 ms, delta:11 ms
hook: the_content, from start:147 ms, delta:13 ms
hook: wp_footer, from start:202 ms, delta:55 ms

Die meiste Zeit geht also bei der Darstellung der einzelnen Artikel drauf („the_content“). Zwischen dem letzten content-Hook und wp_footer wird die Seitenleiste aufgebaut. Dort scheinen das TLA- bzw. das Linklift-Plugin ab und zu mal eine regelrechte Pause einzulegen, so dass der Seitenaufbau mehrere Sekunden dauert. Vielleicht sollte hier mal jemand etwas programmieren, das die Anzeigen im Hintergrund überprüft und nachläd. Anyone?

Artikelseite:

Stats:
2 big queries (over 1 ms) taking 3.9858818054199 ms to execute
and 103 small queries eating 10.961771011353 ms of your time.
That sums up to 105 queries in 14.947652816772 ms

Hooks:
hook: plugin_init, from start:13 ms, delta:13 ms
hook: plugins_loaded, from start:21 ms, delta:8 ms
hook: init, from start:29 ms, delta:8 ms
hook: template_redirect, from start:34 ms, delta:5 ms
hook: wp_head, from start:37 ms, delta:3 ms
hook: the_content, from start:42 ms, delta:5 ms
hook: comments_template, from start:51 ms, delta:9 ms
hook: wp_footer, from start:133 ms, delta:82 ms

Auch hier relativ viele Abfragen an die Datenbank, aber besonders lange braucht das nicht. Der größte Brocken ist wieder die Seitenleiste, aber hier schwanken die Zeiten je nach Artikel so sehr, dass sich darüber keine richtige Aussage treffen lässt. 133 ms für die Seite ist da schon einer der besseren Werte.

Letztendlich sind es also unendlich viele Zeilen WordPress-Code der die Ausgabe von ein paar sehr schnellen SQL-Abfragen so stark verzögert. Vielleicht sollte sich die Community hier mal bemühen das ganze ein wenig performanter zu machen.

Die Statistiken entstanden übrigens mit einem recht einfachen Plugin, das ich mal schnell zusammengeschrieben habe. Hier gibt’s das zum Download. Hochladen, aktivieren und in der wp-config.hp noch define(’SAVEQUERIES’, true); zu den anderen defines schreiben. Fortan sollte am Ende des Quelltextes jeder Seite ein Kommentar mit dieser Übersicht stehen. Ich empfehle das Plugin wieder zu deaktivieren, wenn man sich die Werte einmal angeschaut hat und übernehme keine Verantwortung für irgendwelche Zerstörungen (auch wenn es extrem unwahrscheinlich ist), die dieses Plugin anrichten könnte …

3 Antworten auf „WordPress SQL- und Hook-Statistiken“

Sowas wollte ich kürzlich auch mal bauen – da mich das Ding langsam aber sicher tierisch aufregt ;-)

Wenn ich mich recht entsinne habe ich – bei meinem Lokalen Teststand ca. 5 Stellen im WordPress „Core“ geändert und tatsächlich 15ms rausgeholt *fg*

Ich schreib die mal zusammen – wenn ich se noch finde ;-)

thx für das Plugin, schau ich mir heut Abend mal -in Ruhe- an

Dem stimme ich grundsätzlich zu, aber es passt schon so wie es ist. So lange die Mehrheit nur mit 2-6 Mbit Leitungen surft sind 200-500 ms pro Seitenaufruf ok. Niemand sollte den „Lag“ merken ;-)

Kommentare sind geschlossen.