Mittwoch, Januar 13, 2010

Aufräumen löst Probleme

Es gibt Zusammenhänge, die glaubt man kaum.
Unsere Java Applikation hatte plötzlich recht häufig auftretende Probleme mit der Datenbankverbindung.
Wir haben es natürlich auf die neuen Datenbankserver beim Kunden geschoben, aber das war es nicht, denn bald hatte auch ein anderer Kunde ähnliche Effekte.

Morgens beim Anmelden brauchte fast jeder User zwei Versuche, weil der erste ein "Connection reset by peer" aufgrund eines Timeouts bekam. Und nach der Mittagspause dann nochmal.
Also hat ein Arbeitskollege mal etwas gesucht und ist auf folgendes gestossen:
Man muss das Tempverzeichnis (%TEMP%) aufräumen.

Bitte was? Ganz recht. In einer Reihe von Versuchen konnten wir den Zusammenhang deterministisch belegen. Wir hatten zwischen den Versionen auf einen neuen Oracle JDBC Treiber
(für Java 1.5) umgestellt, der anscheinend aus unerfindlichen Gründen inmitten des Logins versucht eine Datei mit irgendwelchen Daten zu speichern (Session Keys oder so). Das heißt also nicht etwa bevor die Verbindung aufgebaut wird oder nachdem die Anmeldung durch ist. Nein. Mitten im Login Handshake wird diese Datei ins Tempverzeichnis geschrieben.

Und wenn das Verzeichnis recht voll ist, macht sich Windows den Spaß schon mal über eine Minute für die Indizierung zu brauchen bevor es weitergeht. Überhaupt scheint XP mit jedem Patch in den Grundfunktionen langsamer zu werden. Microsoft will wohl 7 verkaufen.
Jedenfalls ist bei einigen Datenbanken der Timeout für diese Aktion zu kurz. Aber wenn man das Tempverzeichnis aufgeräumt hat und 2GB Datenmüll entfernt hat, läuft es wieder.

Leider scheint es in Windows keine Funktion zu geben, mit der man diese Bereinigung durchführen könnte. Und Programme wie Crap Cleaner will ich unbedarften Usern nicht in die Hand geben. Da ich das aber gelegentlich benutze und mein Tempverzeichnis nur 200 MB (unaufgeräumt) belegte, konnte ich die Probleme bei mir nie nachstellen.