Netzprobleme

Ein weiterer Bereich, der die Leistung oft beeinträchtigt, ist das Netz. Je mehr Sie über das Verhalten Ihres Programms wissen, desto einfacher ist es zu entscheiden, ob das Netz ein Leistungsengpass bilden kann.

Wenn Sie denken, dass Ihr Programm wahrscheinlich an die Ein-/Ausgabe über das Netz gebunden ist, ist netstat ein hilfreiches Tool. Der Befehl netstat stellt neben Informationen zu Netzrouten auch aktive Sockets für jedes Netzprotokoll sowie Statistikdaten bereit (z. B. die Anzahl der Pakete, die empfangen und gesendet werden).

Mithilfe von netstat können Sie anzeigen, wie viele Sockets den Status CLOSE_WAIT oder ESTABLISHED haben. Sie können die TCP/IP-Parameter entsprechend optimieren, um eine bessere Leistung des Systems zu erzielen. Wenn Sie /proc/sys/net/ipv4/tcp_keepalive_time optimieren, wird beispielsweise die Zeit für Socketwartezustände im Status TIMED_WAIT reduziert, bevor ein Socket geschlossen wird.

Wenn Sie das Dateisystem /proc/sys/net optimieren, wirken sich die Änderungen auf alle Anwendungen aus, die auf dem System aktiv sind. Verwenden Sie zum Ändern eines einzelnen Sockets oder einer einzelnen Verbindung Java™ Socket-API-Aufrufe für das entsprechende Socket-Objekt. Mit netstat -p (oder mit dem Befehl lsof) können Sie die Prozess-ID des Prozesses ermitteln, der der Eigner eines bestimmten Sockets ist. Mit dem Befehl kill -QUIT <pid> können Sie eine Java-Core-Dump-Datei generieren, die Details zum Socketobjekt im Stack-Trace enthält.

Die Bereitstellung von Übersichtsstatistiken zu Ihrem Netz ist bei der Überprüfung von Programmen hilfreich, die möglicherweise aufgrund von TCP/IP-Problemen leistungsschwach sind. Je mehr Sie über Ihre Hardwarekapazität wissen, desto leichter ist es, die Parameter von Systemkomponenten zu optimieren, die die Leistung Ihrer Anwendung verbessern. Sie können auch feststellen, ob die Leistung durch die Optimierung des Systems verbessert wird oder ob Sie Systemupgrades benötigen.