<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>niebegeg.net &#187; FastCGI</title> <atom:link href="http://niebegeg.net/tags/fastcgi/feed/" rel="self" type="application/rss+xml" /><link>http://niebegeg.net</link> <description>Mein Leben im Entwicklerland</description> <lastBuildDate>Mon, 06 Feb 2012 20:30:16 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Drupal-Performance-Odysee mit Happy-End</title><link>http://niebegeg.net/2009/03/27/drupal-performance-odysee-mit-happy-end/</link> <comments>http://niebegeg.net/2009/03/27/drupal-performance-odysee-mit-happy-end/#comments</comments> <pubDate>Fri, 27 Mar 2009 21:05:55 +0000</pubDate> <dc:creator>Dirk Rüdiger</dc:creator> <category><![CDATA[Drupal]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[D6]]></category> <category><![CDATA[FastCGI]]></category> <category><![CDATA[Lighttd]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Profiling]]></category> <category><![CDATA[xdebug]]></category> <guid
isPermaLink="false"></guid> <description><![CDATA[Mit dem Update unseres Intranet-Portals von D5 auf D6 und dem gleichzeitigen Umzug der Installation von einem virtuellen Webserver (Xen+Linux) auf einen physischen Server (auch Linux, identische Hardware) handelte ich mir einen totalen Einbruch der Performance der Seite ein. Ein “normaler” Seitenaufruf dauerte ~7 Sekunden, für die Startseite (mit Panels voller Views-Blöcke) dauerte das Laden [...]]]></description> <content:encoded><![CDATA[<p>Mit dem Update unseres Intranet-Portals von D5 auf D6 und dem gleichzeitigen Umzug der Installation von einem virtuellen Webserver (Xen+Linux) auf einen physischen Server (auch Linux, identische Hardware) handelte ich mir einen totalen Einbruch der Performance der Seite ein. Ein “normaler” Seitenaufruf dauerte ~7 Sekunden, für die Startseite (mit Panels voller Views-Blöcke) dauerte das Laden ~13 Sekunden. Somit war das Intranet-Portal praktisch unbenutzbar.</p><p>Nachdem ich mich von dem schrecken erholt hatte, begann ich mit der Ursachenforschung.</p><p>Den Einstieg bekam ich mit Ingos <a
href="http://blog.windfluechter.net/index.php?/archives/320-Performance-Tweaking-with-Drupal.html">Blog-Eintrag</a>.</p><p>Von dort ging es weiter zu http://2bits.com/articles/drupal-performance-tuning-and-optimization-for-large-web-sites.html und dem sichten der extra-langen Liste nach anwendbaren Vorschlägen.</p><p>Mein erster Kandidat war die MySQL-Datenbank. Sie läuft auf dem selben Rechner wie der Web-Server also keine zu überprüfende Netzwerk-Kommunikation. Also nahm ich das <a
href="http://www.day32.com/MySQL/">tuning-primer.sh-Skript</a> und optimierte den DB-Server, so lange mir die Vorschläge plausibel erschienen und endlich alle Tests <span
style="color: green;">auf Grün standen</span>. <strong>Keine Verbesserung.</strong></p><p>Auch zeigte das <a
href="http://drupal.org/project/devel">devel.module</a>, dass nur ein Bruchteil der Ladezeit für die SQL-Queries benötigt wurde.</p><p>Als nächstes (wenige Tage später) nahm ich mir den Apache vor. Auf ihm laufen neben PHP-Skripten (drupal, phpmyadmin) auch diverse Python-Apps und ein Scalix mit Tomcat-Servlet-Connector. Ich entfernte alle Apache-Erweiterungen, die nicht unbedingt benötigt werden (z.B. <em>mod_userdir</em> und <em>mod_info</em>). Dann noch <em>.htaccess</em>-Konfigurationen in die statische Server-Konfiguration übernommen und <a
href="http://eaccelerator.net/">eaccelerator</a> installiert. <strong>Keine Verbesserung.</strong></p><p>Zwischendurch habe ich ein Benchmark eingeschoben, um von der “gefühlten” Trägheit des Servers zu vergleichbaren Werten zu kommen und vielleicht schon kleine Verbesserungen wahrnehmen zu können.</p><p>Das Ergebnis:</p><pre class="lang-bash"><code>ab -n50 -c2 -dS http://portal.firma.de/node/<span class="nu0">111</span><br />
...<br />
Connection Times <span class="br0">&#40;</span>ms<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min &nbsp; avg &nbsp; max<br />
Connect: &nbsp; &nbsp; &nbsp; <span class="nu0">49</span> &nbsp; <span class="nu0">105</span> &nbsp; <span class="nu0">302</span><br />
Processing: <span class="nu0">11182</span> <span class="nu0">12339</span> <span class="nu0">16441</span><br />
Total: &nbsp; &nbsp; &nbsp;<span class="nu0">11231</span> <span class="nu0">12444</span> <span class="nu0">16743</span></code></pre><p>Frustrierend!</p><p>Ich hatte als nächstes den verdacht, dass der Apache (2.0.18) mit der Multifunktionalität zu kämpfen hat und nicht gleichzeitig ein guter PHP- und Servlet-Host sein kann. Außerdem wollte ich mal <em>lighttpd</em> und <em>FastCGI</em> testen, weil das bei vielen Performance-Reports als Alternative genannt wird (unabhängig von einander). So hatte ich <em>lighttpd+FastCGI</em> auf Port 81 installiert und auf die identische Code-Basis losgeschickt. Der Benchmark ergab: <strong>Keine Verbesserung</strong>.</p><p>Nun, nach ein paar weiteren Bedenk-Tagen bin ich zu der festen Überzeugung gekommen, dass das Problem im Drupal zu finden war. So habe ich nach weiterem <a
href="http://groups.drupal.org/node/20494">Literaturstudium</a> hatte ich dann den entscheidenden Tipp gefunden: http://civicactions.com/blog/2009/feb/10/profiling_drupal.</p><p>So kopierte ich die gesamte Drupal-Installation auf mein Notebook (zur Vereinfachung der ganzen Sache), installierte “xdebug“http://www.xdebug.org/, aktivierte das <a
href="http://www.xdebug.org/docs/profiler">Generieren von Profiling-Informationen</a> und installierte <a
href="http://kcachegrind.sf.net/">kcachegrind</a> (<span
class="caps">KDE</span>, Linux). Und ziemlich schnell war klar, dass der Performance-Engpass durch das Modul <a
href="http://drupal.org/project/og_content_type_admin">og_content_type_admin</a> verursacht wurde, welches in <a
href="http://api.drupal.org/api/function/hook_init">hook_init</a> jedes mal die Funktion “menu_router_rebuild” aufruft. Als ich diesen Aufruf testweise auskommentierte, <strong>hatte ich kein Performance-Problem mehr!</strong></p><p>Ein nochmaliger Benchmark lieferte überzeugende Ergebnisse:</p><pre class="lang-bash"><code><span class="re3"># ab -n50 -c2 -dS http://portal.firma.de/node/<span class="nu0">111</span></span><br />
...<br />
Connection Times <span class="br0">&#40;</span>ms<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min &nbsp; avg &nbsp; max<br />
Connect: &nbsp; &nbsp; &nbsp; <span class="nu0">90</span> &nbsp; <span class="nu0">105</span> &nbsp; <span class="nu0">148</span><br />
Processing: &nbsp;<span class="nu0">1279</span> &nbsp;<span class="nu0">1470</span> &nbsp;<span class="nu0">2139</span><br />
Total: &nbsp; &nbsp; &nbsp; <span class="nu0">1369</span> &nbsp;<span class="nu0">1575</span> &nbsp;<span class="nu0">2287</span></code></pre><p>Mit 1,5 Sekunden Seiten-Ladezeit kann ich sehr gut leben :)</p><p>Das Problem ist <a
href="http://drupal.org/node/330135">den Entwicklern übrigens bekannt</a>, allerdings ist das Ticket geschlossen und die vorgeschlagene Lösung hat bei mir keine Verbesserung gebracht. So habe ich mich von der Funktionalität leichten Herzens getrennt.</p><p><a
href="https://dirkr.fornax.uberspace.de/wp-content/uploads/2009/03/screenshot-kcachegrind.png"><img
src="https://dirkr.fornax.uberspace.de/wp-content/uploads/2009/03/screenshot-kcachegrind-300x218.png" alt="Screenshot KCachegrind" title="Screenshot KCachegrind" width="300" height="218" class="alignleft size-medium wp-image-689" /></a></p><div
class="betterrelated"><p><strong>Ähnliche Beiträge:</strong></p><ol><li> <a
href="http://niebegeg.net/2009/12/17/suchen-auf-drupal-sites-macht-spass-mit-apache-solr/" title="Permanent link to Suchen auf Drupal-Sites macht Spaß mit Apache Solr!">Suchen auf Drupal-Sites macht Spaß mit Apache Solr!</a></li><li> <a
href="http://niebegeg.net/2008/04/02/warum-ich-mich-fuer-einen-palm-centro-entschieden-habe-und-es-wieder-tun-wuerde/" title="Permanent link to Warum ich mich für einen Palm Centro entschieden habe &#8230; und es wieder tun würde!">Warum ich mich für einen Palm Centro entschieden habe &#8230; und es wieder tun würde!</a></li><li> <a
href="http://niebegeg.net/2010/09/30/quickstart-drupal/" title="Permanent link to Quickstart Drupal">Quickstart Drupal</a></li><li> <a
href="http://niebegeg.net/2008/01/15/happy-birthday-drupal/" title="Permanent link to Happy birthday, Drupal!">Happy birthday, Drupal!</a></li><li> <a
href="http://niebegeg.net/2010/12/12/aktive-drupal-website-auf-den-pc-spiegeln/" title="Permanent link to Aktive Drupal-Website auf den PC spiegeln">Aktive Drupal-Website auf den PC spiegeln</a></li></ol></div><p><a
href="https://dirkr.fornax.uberspace.de/?flattrss_redirect&amp;id=108&amp;md5=0ec54672966041853a02f90e220628f7" title="Flattr" target="_blank"><img
src="http://niebegeg.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded> <wfw:commentRss>http://niebegeg.net/2009/03/27/drupal-performance-odysee-mit-happy-end/feed/</wfw:commentRss> <slash:comments>6</slash:comments> <atom:link rel="payment" href="https://dirkr.fornax.uberspace.de/?flattrss_redirect&amp;id=108&amp;md5=0ec54672966041853a02f90e220628f7" type="text/html" /> </item> </channel> </rss>
