Das Putzlowitsch Test- und SEO-Blog

Höher, schneller, weiter

Mit den Google-Webmastertools bekommt man einen guten Überblick, wie oft der Googlebot vorbeischaut und wieviele Daten er in welcher Zeit Abfragt.

Pro Tag gecrawlte Seiten

Google - Crawling Anzahl der Seiten pro Tag Februar 2010
Auf dem Diagramm ist noch das Ende vom November, der ganze Dezember und Januar und der Anfang vom Februar zu sehen. Scheinbar tritt der Googlebot auch über den Jahreswechsel etwas kürzer, feiert Weihnachten und Silvester und legt dann erst Mitte Januar wieder richtig los.

Pro Tag heruntergeladene Kilobyte

Google - Crawling Datenmenge in kByte pro Tag Februar 2010
In etwa parallel dazu verläuft normlerweise die Kurve zu den täglich heruntergeladenen Datenmengen. Klar, je mehr Seiten angefragt werden, um so mehr Daten fallen da durchschnittlich an.

Eines fällt aber auf, denn obwohl die Anzahl der pro Tag abgefragten Seiten ab Mitte Januar und im Februar höher liegen als noch im November, ist die Datenmenge nicht in gleichem Maße angestiegen. Der Grund ist recht einfach. Ich hatte Anfang/Mitte Dezember die gzip-Komprimierung für die Seiten aktiviert.

Dauer des Herunterladens einer Seite (in Millisekunden)

Google - Crawling Zeit in Millisekunden pro Seite Februar 2010
Die Geschwindigkeit der Seitenauslieferung ist die für den normalen Nutzer, also den Besucher einer Website der wohl wichtigste, technische Wert. Wenn erstmal ein paar Sekunden nach dem Aufrufen einer Seite oder länger nichts passiert, ist das aus Anwendersicht eher unerfreulich.

Der Wert lag im November bei etwa 1,5 Sekunden und schließt damit an die Zahlen vom Oktober an. Anfang Dezember bin ich dann Dank SpeedPlus wieder zu Strato zurückgekehrt und seitdem liegen die Ladezeiten fast immer bei erfreulichen 0,8 Sekunden. Aber eben nur fast. Wie man im Diagramm sieht, gab es schon im Dezember und Anfang Januar Ladezeitspitzen, die dann im Februar nochmal deutlich zunahmen. Allerdings ist das eher darin zu sehen, daß durch die größere Anzahl der pro Tag abgefragten Seiten auch die Wahrscheinlichkeit für den Googlebots auf eine Lastspitze zu treffen, größer war.

Ungeachtet dessen gibt es aber diese Lastspitzen, die nicht nur der Googlebot „sieht“, sondern auch der normale Nutzer bemerkt. Wenn man Pech hat, dauert das Laden einer Seite wieder 4 bis 6 Sekunden, ganz so wie vor der SpeedPlus-Zeit bei Strato. Diesmal ist es aber meiner Meinung nach nicht die schlechte PHP-Performance, sondern eher die Datenbank. Die Datenbankserver sind zwar grundsätzlich nicht wirklich lahm, legen aber ab und zu ein paar Gedenkminuten ein, wie mir scheint. Und genau dann dauert der Seitenaufruf wieder mehrere Sekunden. Kürzlich gab es auch wieder mal einen Totalausfall, der dann zu einem 500er Fehler führt.

Hin und weg

Nun sind zwar PHP und Webserver bei Strato schnell, aber die Datenbank klemmt mitunter. Deshalb bin ich vorerst wieder zu meiner externen Datenbank zurückgekehrt. Das eigentlich langsame ist hierbei die Datenübertragung über das Internet zwischen Strato (Karlsruhe/Berlin) und Host-Europe (Köln). Um das etwas abzudämpfen, habe ich zusätzlich ein Datenbank-Cache-Plugin installiert, welches häufig benötigte Daten auf dem Webspace bei Strato im Dateisystem ablegt, um diese nicht jedesmal neu übertragen zu müssen. Zumal sich viele Daten, z.B. die Artikel und Seiten normalerweise eh nicht ändern.

Nun werde ich das Alles mal weiter beobachten, wie das mit den Ladezeiten so aussieht und hoffe aber trotzdem, das Strato die Datenbankaussetzer in den Griff bekommt.

Keine Kommentare »

Strato PowerPlus mit SpeedPlus – Fehler bei der Remote-Adresse (REMOTE_ADDR)

Nachtrag am 22.01.2010:

Seit heute scheint das weiter unten geschilderte Problem mit der Remote-Adresse nicht mehr zu bestehen. Die Einträge in der .htaccess-Datei oder sonstige Eingriffe sind daher möglicherweise nicht mehr erforderlich.
Bei mir ist das Problem verschwunden, aber offensichtlich noch nicht generell.

Nachtrag am 01.03.2011:

Nach aktuellen Informationen ist das Problem wohl nun doch endgültig behoben worden. Die Einträge in der .htaccess-Datei oder sonstige Eingriffe sind daher nicht mehr erforderlich.

Seit Anfang Dezember 2009 bin ich mit meiner Schnurpsel-Seite wieder zurück zu Strato umgezogen. Ganz weg war ich ja nicht, ich hatte nur den Hostnamen bei einem anderen Anbieter aufgeschaltet. Aber seit es nun SpeedPlus bei Strato gibt, bin ich nun doch wieder zurückgekehrt.

Die Geschwindigkeit ist wirklich gut. Antwortzeiten von ungefähr 0,5 Sekunden gegenüber 3 bis 4 Sekunden vorher sind für ein PHP-Schwergewicht wie WordPress eine merkliche Verbesserung. Zudem wurde auch gleich das ohne-www-Problem beseitigt, in der Umgebungsvariable HTTP_HOST steht nun der tatsächlich im HTTP-Request angegebene host drin.

Die Remote-IP-Adresse (REMOTE_ADDR)

Neben allerlei anderen interessanten Informationen wird bei jedem Webseitenaufruf auch die IP-Adresse des Aufrufers in einer Umgebungsvariablen vermerkt. Auf diese kann z.B. mit Skriptsprachen wie PHP oder Perl als Variable „REMOTE_ADDR“ zugegriffen werden. Diese Remote-Adresse ist z.B. für statistische Auswertungen interessant oder kann beim Aussperren unerwünschter Zugriffe (Spam-Bots) helfen.

Allerdings zählt diese IP-Adresse ja nach Auffassung und Auslegung der Gesetze zu den personenbezogenen Daten und dürften dann eigentlich nicht gespeichert werden. Bei Strato werden die IP-Adressen in den den Kunden zur Verfügung gestellten Serverlogdateien in anonymisierter Form gespeichert. Auch die im Kundenmenü anzeigbare Webseiten-Statistik greift auf diese Daten zurück.
So können die Zugriffe zwar unterschieden aber nicht einem konkreten Anschluß zugeordnet werden

Mehr Geschwindigkeit mit SpeedPlus

Wenn ich die Grafik zu SpeedPlus bei Strato richtig deute, werden die Zugriffe nicht mehr direkt auf die Webserver geroutet, sondern von einem Loadbalancing-Cluster lastabhängig verteilt.
Diese Verteilung funktioniert vermutlich ähnlich wie bei einem nicht-transparenten Proxy, denn für den Webserver sieht es so aus, als würde der Strato-interne Server die Seite anfordern. Genau deshalb steht in der Remoteadresse nicht mehr die IP-Adresse des Aufrufers drin, sondern eine 81.169.145.xxx drin.

Komischerweise tritt der Effekt aber nicht bei allen Domains auf, nur die Hälfte meiner Domains (inkl. Subdomains) bei Strato ist davon betroffen.

Die richtige Remoteadresse ermitteln und setzen

Ich wäre ja nicht Schnurpsel, hätte ich nicht bereits eine Lösung für das Problem parat :-)
Die richtige IP-Adresse findet man im Request-Header-Feld X-Forwarded-For, daß heißt der Strato-Server trägt hier die Adresse ein, von der er die Anforderung erhalten hat.

In Skriptsprachen wie PHP oder Perl steht diese Variable als „HTTP_X_FORWARDED_FOR“ zur Verfügung. Hier könnte man sich die Remote-Adresse also einfach möglichst am Anfang (bei WP z.B. in der wp-config.php) der Abarbeitung in die REMOTE_ADDR eintragen, z.B. so:

if( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
  $ip_addr = @trim( @end( @explode( ",", $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) );
  if( '' != $ip_addr )
    $_SERVER['REMOTE_ADDR'] =  $ip_addr;
}

Hier kommen zwei wichtige Aspekte zum Tragen, denn in „X-Forwarded-For“ können mehrere durch Komma getrennte IP-Adressen stehen, sofern unterwegs mehrere Proxies durchlaufen wurden. Außerdem soll die Adresse nicht überschrieben werden, falls kein X-Forwarded-For-Feld existiert oder aus anderem Grund nicht ermittelt werden kann.

Für Perl könnte das etwa so aussehen:

if( $ENV{'HTTP_X_FORWARDED_FOR'} ne "" )
{
  my @ip_list = split(/,/, $ENV{'HTTP_X_FORWARDED_FOR'});
  $ENV{'REMOTE_ADDR'} = $ip_list[-1]; 
}

Nachteil ist hierbei natürlich, daß man alle Webapplikationen, die irgendwie die REMOTE_ADDR verwenden, entsprechend anpassen muß. Es geht aber auch noch einfacher und allgemeiner.

Umgebungsvariablen mit mod_setenvif setzen

Das Apache-Modul mod_rewrite kennen bestimmt viele WordPress-Nutzer, manch einer kennt vielleicht sogar mod_alias, aber vermutlich nur wenige haben schon mal etwas vom Modul mod_setenvif gehört. Es kommt auch ganz bescheiden und unspektakulär mit nur vier Anweiungen daher.

Mit dem Modul mod_setenvif hat man die Möglichkeit, Umgebungsvariablen abhängig von Request-Feldern zu setzen. Genau das brauchen wir hier. Wir haben das Request-Feld X-Forwarded-For und wollen abhängig davon die Umgebungsvariable REMOTE_ADDR setzen. Das Problem läßt sich mit ein bißchen Regular-Expression in einer Zeile in der .htacces erschlagen:

SetEnvIf X-Forwarded-For "(.+,)? *(.+)$" REMOTE_ADDR=$2

Optimalerweise steht diese Zeile ganz am Anfang einer .htaccess im Wurzelverzeichnis des Webpaketes. Dann wirkt sei auch auf alle Domains oder Subdomains, die ihr sichtbares Wurzelverzeichnis in einem Unterverzeichnis des Webspace haben.

Das schöne an diesem kleinen Eingriff ist, daß er auch auf das Serverlogfile und die Webstatistik wirkt. Im Logfile stehen nun wieder zwar anonymisierte, aber unterscheidbare Zugriffe und die Webstatistik zeigt nicht mehr 10000 Zugriffe von nur 5 Adressen an.

Ende gut, alles gut?

Mit ein bißchen Handarbeit kann man wieder mal einen Strato-Konfigurationsfehler ausbügeln. Andereseits ist die SpeedPlus-Plattform noch recht neu, da können solche Fehler schon mal auftreten. Ich habe das Problem auch bereits vor 10 Tagen an den Strato-Support gemeldet, warte aber immer noch auf die Antwort zu meinem Ticket. Scheint etwas komplizierter zu sein. Bis zur Strato-Problemlösung kann mein kleiner „Trick“ zumindest über die Zeit helfen.

7 Kommentare »

SpeedPlus – Strato macht PHP-Anwendungen schneller

Daß ich das noch miterleben darf! Strato hat es tasächlich geschafft, die Performance von PHP-Webapplikationen wie WordPress, Joomla, Typo3 oder Drupal deutlich zu verbessern. „SpeedPlus“ heißt das Kind und wird in einer entsprechenden Pressemitteilung etwas ausführlicher erläutert.

Und nun kommt auch schon die schlechte Nachricht. Von SpeedPlus profitieren derzeit nur Webhostingpakete der PowerPlus-Klasse. Mit BasicWeb und DynamiX guckt man geschwindigkeitsmäßig weiterhin in die Röhre.

Zwar werden in der Pressemitteilung nur die Neukunden erwähnt, aber teilweise werden wohl auch Bestandskunden mit den passenden Tarifen umgestellt. So erhielt ich vorhin einen Anruf vom technischen Support bezüglich meines Tickets 1034031, welches ich angeblich am 16.11. durch eine telefonisch Anfrage initiiert haben soll. Ich bin zwar manchmal etwa vergeßlich aber in dem Fall sehr sicher, daß ich da nicht angerufen hatte. Aber egal, zumindest wurden vom Support ein paar technische Fragen zur Umstellung geklärt und eine halbe Stunde später ging mit meiner WordPress-Testinstallation richtig die Post ab.

Antwortzeiten von etwa einer halben Sekunde gegenüber 3 bis 4 Sekunden vorher sind schon eine angenehme und merkliche Verbesserung. Zudem wurde das ohne-www-Problem beseitigt, es wird also im HTTP_HOST der tatsächlich im Request angegebene host zurückgeliefert.

Im Moment gibt es eigentlich nur noch einen Grund, der mich davon abhält, mit meiner Schnurpsel-Seite wieder zu Strato zurück umzuziehen. Der hoffnungslos veraltete und damit fehlerhafte WebDatabaseManager in Gestalt von phpMyAdmin-Version 2.6.4-pl3 ist nun wirklich keine Glanzleistung für einen der großen Webhoster in Deutschland.

Vielleicht gibt es ja auch noch ein Update für den „WebDatabaseManager“, dann könnte man sogar Strato mit den PowerPlus-Webhostingpaketen für WordPress empfehlen. Das kleinste PowerPlus-Paket, welches ich hier selbst habe, kostet übrigens derzeit 6,90 Euro und ist mit der aktuellen Aktion bis zum 31.12. für die ersten 6 Monate umsonst.

23 Kommentare »

Ticket 1034031

Manchmal bekommt man Antworten auf Fragen, die man gar nicht gestellt hat.

So kam vor einer Woche eine E-Mail vom Strato-Support zum oben genannten Ticket. Also von mir ist das nicht, meine letzte Supportanfrage war im Dezember 2008 und damals ging es um das Problem mit dem Datenbank-Backup und der veralteten und damit fehlerhaften phpMyAdmin-Version.

… wir möchten Sie mit dieser E-Mail über den Bearbeitungsstand Ihres Troubleticket informieren.
Ich habe Ihre Internetpräsenz aufgerufen und dabei festgestellt, dass die Ladezeiten aktuell im Rahmen liegen.

Die Frage ist, welche Internetpräsenz er aufgerufen hat. Wenn es meine Strato-Hauptdomain, als Schnurpsel-Seite hier ist, dann wundert es mich nicht, daß „die Ladezeiten aktuell im Rahmen liegen“. Schließlich bin ich vor ein paar Monaten mit der Seite umgezogen.

Punktuelle Engpäße können wir im Shared Webhosting Bereich leider nicht ganz ausschliessen. … Mit dem WordPress-Plugin Super Cache oder DB Cache kann die Anzeige der Seiten von WordPress beim wiederholten Aufruf des Benutzers beschleunigt werden. In den entsprechenden Foren und auf der Seite von WordPress finden Sie dazu weiterführende Hinweise. …

usw. usw.

Naja, komische Sache, mit dem Ticket, daß mir nicht gehört. Vielleicht wurde pauschal an alle Kunden, die WordPress nutzen, sowas verschickt. Keine Ahnung.

Weitere Artikel mit Bezug zu diesem:
2 Kommentare »

Update durch Downgrade 2.0

Auch wenn ich zumindest WordPress-technisch gesehen mit meiner Schnurpsel-Seite Strato den Rücken gekehrt habe, habe ich nicht gleich das ganze Webhosting-Paket (PowerWeb Advanced) aufgegeben. Die Seite wird halt nur per DNS umgeleitet, weil ich die PHP-Performance im Moment bei Strato für nicht akzeptabel halte.

Das hält mich aber nicht davon ab, mal eben ein Update des Paketes vorzunehmen. Wer weiß, vielleicht wird auch bei Strato das PHP mal schneller und ich habe aus SEO-Kreisen gehört, daß es nicht verkehrt ist, Seiten bei verschiedenen Anbietern zu haben, um z.B. Linknetzwerke aufzubauen.

Wie schon beim letzten mal, kann man das Update nicht mit ein paar Klicks im Kundenmenü bewerkstelligen, weil man dort nur in höherwertige und damit teurere Hostingpakete wechseln kann. So bleibt nur der Weg über ein „Downgrade“ per FAX, um quasi das Paket zu behalten und nur auf den aktuellen Stand zu bringen. Was bringt das nun konkret? Hier mal ein paar Paket-Leistungsdaten im Vergleich:

Leistung PowerWeb PowerPlus
Speicherplatz 800 MB 3000 MB
Subdomains 60 200
Traffic 80 GB unlimited
MySQL Datenbanken 2 5
E-Mail-Postfächer 200 300
FTP-Zugänge 3 5
Laufzeit 12 Monate 6 Monate
Preis/Monat € 6,99 € 6,90

Für 9 Cent weniger im Monat und nur noch einem halben Jahr Mindestvertragslaufzeit gibt es einiges an Mehrleistung. Schneller ist damit aber leider nichts geworden.

Keine Kommentare »