Dieser Beitrag beruht auf wahren Tatsachen! Ich habe dieses Phänomen auf einem echten Webserver gefunden, aber die Art und Weise der Fehlermeldung war mindestens genauso interessant wie der eigentliche Fehler.
Der Kunde hat SSH-Zugang zu dem Webserver, und meldet sich mit Putty an. Soweit nichts besonderes. Allerdings bedeutet das, dass wir Fehlerbeschreibungen meist per Screenshot bekommen. Auch damit kann man leben, auch wenn manchmal mehr Fehlerbeschreibung als “Was soll das?” wünschenswert wäre. Aber dieses Mal wurde uns tatsächlich geholfen, indem die betreffende Stelle markiert wurde. Aber wie? Das ist das spezielle.
Der Kunde hat einen Screenshot von PuTTY gemacht, diesen in MS Paint geladen und dort eine Markierung gemacht. Bisher ist noch alles halbwegs in Ordnung. Aber jetzt kommt der Knüller: Von der ganzen Geschichte wurde wieder ein Screenshot gemacht, und dieser Screenshot fand sich als Anhang in der Mail. Eine Nachstellung findet sich unten:
Aber worüber hat sich der Kunde überhaupt beklagt? Nun, es war später Nachmittag, und der Prozess updatedb, der am frühen Morgen von cron gestartet wird, war immer noch emsig bei der Arbeit. Aber was hat er erfasst? Das sollte ich bald herausfinden.
Im DocumentRoot des Webservers fand ich ein Verzeichnis, in dem wiederum etliche Verzeichnisse und Unterverzeichnisse lagen. Diese Webseite stellt Informationen nach verschiedenenen Orten und Kategorien sortiert zur Verfügung. Jedes dieser Verzeichnisse war ein Ort, jedes Unterverzeichnis eine Kategorie. Alle Verzeichnisse waren automatisch angelegt worden, und enthielten jeweils eine einzelne Datei namens index.php mit einem solchen Inhalt:
<?php
$_SESSION[‘ort’] = 6883;
$_SESSION[‘kategorie’] = 15988;
$_SESSION[‘unterkategorie’] = 28008;
include($_SERVER[“DOCUMENT_ROOT”].”/index.php”);
?>
Insgesamt gab es zirka 4.5 Millionen Dateien, und die Partition belegte bereits 77% der verfügbaren inodes (Dateisystemeinträge). Kurz, der Rechner war kurz vor dem Kollaps, weil ein Entwickler geglaubt hat, dass das Dateisystem zu einem Ort, einer Kategorie, und einer Unterkategorie schneller eine Datei finden kann als eine Datenbank die jeweiligen IDs.