2015-06-14 19 views
6

Ich möchte meine J2EE-Anwendung unter hoher Belastung von Sitzungen auf verschiedene Seiten zugreifen.Monitor Log4j Verhalten unter Last

Diese Webanwendung verwendet Log4J, um eine Reihe von Fehlern, Warnungen und Informationen zu protokollieren. Ich möchte testen, was die Nebenwirkung dieser Last auf das Schreiben von Protokolldateien ist, insbesondere gleichzeitige E/A-Schreibaktionen.

Ich fand, dass Log4j deadlock under high load conditions.

Die Frage ist, ob OS (Linux) irgendwelche Beschränkungen für das gleichzeitige Schreiben von E/A-Dateien hat oder behandelt Log4j diese Parallelität?

Wie kann ich Verzögerungen im E/A-Prozess überwachen (wegen hoher Auslastung) oder es kommt zu einem Deadlock?

Dank

Antwort

2

Da niemand meine Frage, antwortete mir

Diese link irgendwie mein Problem durch die Lösung helfen.

Log4j schreibt in Dateien und die Konsole seriell. Während also ein Thread schreibt, muss ein anderer Thread, der schreiben möchte, warten, bis der andere beendet ist. stdout kann auch blockieren, wenn das, was am anderen Ende an ihm hängt, es nicht drainiert.

In Unix gibt es einen speziellen Dateideskriptor namens stdout. Wenn Sie Anwendungen in der Konsole starten, wird stdout an die Konsole angehängt. Sie können auch stdout zu anderen Dateien umleiten. ex: java Blah > /dev/null. Wahrscheinlich haben Sie stdout zeigt auf eine Datei, die sich füllt. Zum Beispiel ist eine Pipe eine Datei, und wenn das Programm am anderen Ende die Pipe nicht entleert, blockiert das Programm, das in die Pipe schreibt.

Verwandte Themen