Bugfixing Stepload – ein behobenes Mailproblem oder DNS-Caching in Java

Andere Projekte

Bugfixing Stepload – ein behobenes Mailproblem oder DNS-Caching in Java

Bugfixing Stepload – ein behobenes Mailproblem oder DNS-Caching in Java

Es ist schon interessant. Stepload ist bekanntermaßen eine Webapplikation die tausenden von Usern jeden Tag hervorragende Dienste leistet ohne dass man die Server neu starten müsste. Um genau zu sein ist der letzer Serverstart 4 Monate oder anders ausgedrückt 1 Mio. Downloads her. Ich finde das kann sich sehen lassen. Trotzdem trat vor einigen Tagen ein merkwürdiges Problem auf:

Die E-Mails zur Weiterleitung der Download-Links konnten nicht ordnungsgemäß zugestellt werden. Das System hatte aber zuvor wunderbar funktioniert. Was also ist passiert?

Der Mailserver ist umgezogen. Eigentlich keine große Sache. Da alle Stepload-System wunderbar in virtuellen Maschinen gekapselt sind kann man sie auch komfortabel verschieben und kopieren. Dumm nur, wenn dabei die externe IP-Adresse wechselt. Eigentlich auch kein Problem. Dann setzt man einfach den DNS-Record neu und die Sache sollte erledigt sein.

Nun, dass habe ich auch gedacht. Dummerweise habe ich nicht damit gerechnet, dass DNS-Abfragen in Java einem recht bescheidenen Caching-Mechanismus folgen (jedenfalls in allen Versionen unter 1.6). Die Standardprozedur lautet:

Ist ein Hostname einmal aufgelöst, wird die IP-Zuordnung für immer behalten. Wobei das “für immer” eben in meinem Fall bedeutete: bis zum nächsten Server Neustart.

Ab Java 1.6 heißt das Standardverhalten: Halte Dich beim Caching an die Vorgaben des Betriebssystems. Dieses vorgehen ist mir persönlich sympathischer öffnet aber Tür und Tor und DNS-Spoofing. Man sollte also einen sauberen Mittelweg finden und konfigurieren können. Und das geht auch. Und zwar mit den Java Security Properties.

networkaddress.cache.ttl (default: -1)

Diese Property dient der einstellung des Caches für erfolgreiche Namensauflösungen. -1 bedeutet unendlich. Erwartet wird ein ganzzahliger Integer, der die anzahl der Sekunden angbit.

Die Property networkaddress.cache.negative.ttl (default: 10) dient dem Caching von nicht erfolgreichen DNS-Abfragen. Dies steigert die Performance wenn man mehrfach hintereinander den selben Domainnamen aufzulösen hat (z.B. beim Versand von Mails). Der eingestellte Standardwert von 10 Sekunden ist ein durchaus akzeptabler Wert. Insofern gibt es zumindest an dieser Stelle keinen Handlungsbedarf.

Diskussion

Keine Kommentare zu “Bugfixing Stepload – ein behobenes Mailproblem oder DNS-Caching in Java”

Post a comment