Ubuntus Out-Of-Memory-Killer hat auf meinem Server Chaos angerichtet und meine Anwendungen, Sendmail, Apache und andere stillschweigend ermordet.
Ich habe es geschafft zu erfahren, was der OOM Killer ist und über seine "Schlechtigkeits" -Regeln. Während mein Computer klein ist, sind meine Anwendungen noch kleiner und normalerweise wird nur die Hälfte meines physischen Speichers verwendet, geschweige denn der Swap-Space. Ich war also überrascht. Ich versuche, den Schuldigen herauszufinden, aber ich weiß nicht, wie ich die OOM-Killer-Protokolle lesen soll.
Kann mir jemand bitte zu einem Tutorial zeigen auf , wie die Daten in den Protokollen zu lesen (was sind ve
, free
und gen
?), Oder mir helfen , diese Protokolle zu analysieren?
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, seq 1, exc 2326 0 goal 2326 0...
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): task ebb0c6f0, thg d33a1b00, sig 1
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selected 1, signalled 1, queued 1, seq 1, exc 2326 0 red 61795 745
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, seq 2, exc 122 0 goal 383 0...
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): task ebb0c6f0, thg d33a1b00, sig 1
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selected 1, signalled 1, queued 1, seq 2, exc 383 0 red 61795 745
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): task ebb0c6f0, thg d33a1b00, sig 2
Apr 20 20:03:27 EL135 kernel: OOM killed process watchdog (pid=14490, ve=13516) exited, free=43104 gen=24501.
Apr 20 20:03:27 EL135 kernel: OOM killed process tail (pid=4457, ve=13516) exited, free=43104 gen=24502.
Apr 20 20:03:27 EL135 kernel: OOM killed process ntpd (pid=10816, ve=13516) exited, free=43104 gen=24503.
Apr 20 20:03:27 EL135 kernel: OOM killed process tail (pid=27401, ve=13516) exited, free=43104 gen=24504.
Apr 20 20:03:27 EL135 kernel: OOM killed process tail (pid=29009, ve=13516) exited, free=43104 gen=24505.
Apr 20 20:03:27 EL135 kernel: OOM killed process apache2 (pid=10557, ve=13516) exited, free=49552 gen=24506.
Apr 20 20:03:27 EL135 kernel: OOM killed process apache2 (pid=24983, ve=13516) exited, free=53117 gen=24507.
Apr 20 20:03:27 EL135 kernel: OOM killed process apache2 (pid=29129, ve=13516) exited, free=68493 gen=24508.
Apr 20 20:03:27 EL135 kernel: OOM killed process sendmail-mta (pid=941, ve=13516) exited, free=68803 gen=24509.
Apr 20 20:03:27 EL135 kernel: OOM killed process tail (pid=12418, ve=13516) exited, free=69330 gen=24510.
Apr 20 20:03:27 EL135 kernel: OOM killed process python (pid=22953, ve=13516) exited, free=72275 gen=24511.
Apr 20 20:03:27 EL135 kernel: OOM killed process apache2 (pid=6624, ve=13516) exited, free=76398 gen=24512.
Apr 20 20:03:27 EL135 kernel: OOM killed process python (pid=23317, ve=13516) exited, free=94285 gen=24513.
Apr 20 20:03:27 EL135 kernel: OOM killed process tail (pid=29030, ve=13516) exited, free=95339 gen=24514.
Apr 20 20:03:28 EL135 kernel: OOM killed process apache2 (pid=20583, ve=13516) exited, free=101663 gen=24515.
Apr 20 20:03:28 EL135 kernel: OOM killed process logger (pid=12894, ve=13516) exited, free=101694 gen=24516.
Apr 20 20:03:28 EL135 kernel: OOM killed process bash (pid=21119, ve=13516) exited, free=101849 gen=24517.
Apr 20 20:03:28 EL135 kernel: OOM killed process atd (pid=991, ve=13516) exited, free=101880 gen=24518.
Apr 20 20:03:28 EL135 kernel: OOM killed process apache2 (pid=14649, ve=13516) exited, free=102748 gen=24519.
Apr 20 20:03:28 EL135 kernel: OOM killed process grep (pid=21375, ve=13516) exited, free=132167 gen=24520.
Apr 20 20:03:57 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, seq 4, exc 4215 0 goal 4826 0...
Apr 20 20:03:57 EL135 kernel: kill_signal(13516.0): task ede29370, thg df98b880, sig 1
Apr 20 20:03:57 EL135 kernel: kill_signal(13516.0): selected 1, signalled 1, queued 1, seq 4, exc 4826 0 red 189481 331
Apr 20 20:03:57 EL135 kernel: kill_signal(13516.0): task ede29370, thg df98b880, sig 2
Apr 20 20:04:53 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, seq 5, exc 3564 0 goal 3564 0...
Apr 20 20:04:53 EL135 kernel: kill_signal(13516.0): task c6c90110, thg cdb1a100, sig 1
Apr 20 20:04:53 EL135 kernel: kill_signal(13516.0): selected 1, signalled 1, queued 1, seq 5, exc 3564 0 red 189481 331
Apr 20 20:04:53 EL135 kernel: kill_signal(13516.0): task c6c90110, thg cdb1a100, sig 2
Apr 20 20:07:14 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, seq 6, exc 8071 0 goal 8071 0...
Apr 20 20:07:14 EL135 kernel: kill_signal(13516.0): task d7294050, thg c03f42c0, sig 1
Apr 20 20:07:14 EL135 kernel: kill_signal(13516.0): selected 1, signalled 1, queued 1, seq 6, exc 8071 0 red 189481 331
Apr 20 20:07:14 EL135 kernel: kill_signal(13516.0): task d7294050, thg c03f42c0, sig 2
Watchdog ist eine Watchdog-Aufgabe, die im Leerlauf war. Nichts in den Protokollen deutet darauf hin, dass es seit Tagen etwas getan hat. Seine Aufgabe ist es, eine der Anwendungen neu zu starten, wenn sie stirbt, so etwas ironisch, dass sie als erste getötet wird.
Tail überwachte einige Protokolldateien. Es ist unwahrscheinlich, dass er wahnsinnig viel Gedächtnis verbraucht.
Der Apache-Webserver stellt Seiten nur einer kleinen alten Dame zur Verfügung, die sie nur verwendet, um sonntags in die Kirche zu gelangen, ein paar Entwickler, die im Bett geschlafen haben und seit einigen Wochen keine Seite auf der Website besucht haben. Der einzige Verkehr, den es haben könnte, ist von den Port-Scannern; Der gesamte Inhalt ist passwortgeschützt und nicht von irgendwoher verlinkt, sodass keine Spinnen interessiert sind.
Python führt zwei separate benutzerdefinierte Anwendungen aus. Nichts in den Protokollen deutet darauf hin, dass sie nicht wie gewohnt mitsummten. Eine davon war eine relativ junge Implementierung, die den Verdächtigen Nr. 1 macht. Es hat keine Datenstrukturen von Bedeutung und verwendet normalerweise nur etwa 8% der gesamten physischen RAW. Es hat sich seitdem nicht schlecht benommen.
Der Grep ist Verdächtiger Nr. 2 und derjenige, für den ich mich schuldig machen möchte, weil es ein einmaliger Befehl war. Der Befehl (der die Ausgabe eines grep -r an einen anderen grep weiterleitete) wurde mindestens 30 Minuten zuvor gestartet, und die Tatsache, dass er noch ausgeführt wurde, ist verdächtig. Ich hätte jedoch nicht gedacht, dass grep jemals eine signifikante Menge an Speicher verwenden würde. Es dauerte eine Weile, bis der OOM-Killer dazu kam, was darauf hindeutet, dass es nicht verrückt wurde, aber der OOM-Killer hörte auf, als er getötet wurde, was darauf hindeutete, dass es ein Erinnerungsschwein war, das schließlich die Blutlust des OOM-Killers befriedigte .