Der Prozess funktioniert unter Stress, aber nicht im Normalbetrieb.

Der Prozess funktioniert unter Stress, aber nicht im Normalbetrieb.

Ich habe einen Prozess – ein Perl-Skript – der Folgendes tut:

while true
    check a POP account on a server on the lan
    process any email found
    write logs - messages found, actions taken, errors
    sleep for 15 seconds

Es läuft auf einem Redhat 7.3-Server (ich habe ihn geerbt, ich bin mit dem Alter dieser Box nicht zufrieden). Es läuft aus /etc/inittab wie folgt:

spop:2345:respawn:/usr/local/gw/bin/popdmn 

Wenn es abstürzt, wird es von init neu gestartet.

In den letzten Tagen funktioniert der Prozess nicht mehres sei dennes ist straced. Wenn es einfach läuft, meldet es sich nie beim Pop-Server an. Sobald es straced ist (über "strace -Ff -p cat /usr/local/gw/var/popdmn.pid"), funktioniert es einwandfrei.

Als Workaround führe ich screen auf dem Server aus, während ein strace läuft. Das ist natürlich nicht gerade ideal.

Warum sollte ein Prozess das tun? Ich habe das noch nie zuvor gesehen.

Antwort1

Ich glaube, ich bin von einem alten Strace-Virus infiziert:

https://bugzilla.redhat.com/show_bug.cgi?id=64303

https://bugzilla.redhat.com/show_bug.cgi?id=75709

Auf dieser Box läuft strace-4.4-4, also ist es möglich, dass es dieser Fehler ist. Es klingt, als wäre dieser selbstverschuldet, da wir beim Debuggen strace verwendet haben – und es dadurch noch schlimmer gemacht haben.

kill -CONTarbeitet daran, den Prozess fortzusetzen.

DefinitivZeit, diese Box zu aktualisieren.

Antwort2

Der größte Unterschied liegt meiner Meinung nach in der Geschwindigkeit und der Signalverarbeitung.

Was die Geschwindigkeit betrifft, so wird strace, wenn der Prozess mehrere Threads umfasst, das Timing ändern, was wiederum das Verhalten hinsichtlich Race Conditions usw. verändern kann.oderZeitinformationen zum Protokollverhalten.

Beispiel. Angenommen, der POP-Server wurde aktualisiert und achtet nun genauer darauf, dass ein Peer nicht mehrere POP-Befehle gleichzeitig sendet. Dies ist bei einem SMTP-Server als Mittel zur Spam-Abwehr nützlicher.

Beachtet Ihr Prozess das korrekte POP-Verhalten, indem er nach jedem einzelnen POP-Befehl auf eine Antwort vom Server wartet? Oder geht er von Erfolg aus oder wartet eine gewisse Zeit zwischen den Befehlen.

Wenn Sie den tatsächlichen Protokollverkehr in einem erfolgreichen und einem fehlgeschlagenen Fall erfassen, gibt es irgendwelche Anzeichen für eine Protokollverletzung?

verwandte Informationen