[Python-de] Python, Linux und der oom-Killer

Gerson Kurz Gerson.Kurz at t-online.de
Sat Oct 19 12:27:54 EDT 2002


Für mein Problem im folgenden muß ich ein bisserl ausholen, und es ist
vielleicht ein bisserl OT, aber vielleicht hat ja einer Tips, und damit
meine ich nicht Ohrenstäbchen.

Also. Der Server unserer Firma fährt Linux mit Kernel 2.4.19 (Suse 7.3 mit
Standardkernel) mit 768mb ram. An Software läuft hauptsächlich Samba 2.2.5
(sehr intensiv genutzt), ein komplett unterforderter Apache 2.0.43 sowie ein
paar meiner Pythonscripten. Insbesondere läuft da mein Mailserver shicks!,
siehe http://p-nand-q.com/e/shicks.html.

Das ganze läuft wochenlang, teilweise monatelang stabil (zuletzt gestartet
im August), dann kommt plötzlich folgendes:

Oct 17 23:25:08 darkstar kernel: __alloc_pages: 0-order allocation failed
(gfp=0x1d2/0)
Oct 17 23:25:08 darkstar kernel: VM: killing process SMTPServer.py

Das Problem hatte ich im Frühjahr schonmal (siehe z.B.
<news:3cd7f15e.8350453 at news.t-online.de>), dann hat sich scheinbar der
Rechner lange Zeit beruhigt, und vorgestern war es eben wieder so weit. Das
ist natürlich scheisse, weil dann halt keine Mails ankommen können.

Die bisherigen Hinweise waren alle nicht hilfreich - wenn man auf die Worte
"OOM-Killer" & Linuxkernel in die Runde wirft, wird man automatisch als
Troll deklariert und jeglicher Computerkenntnisse bar erklärt; Die
Memory-Commit-Strategie des Kernels zu kritisieren (obwohl das Teil wirklich
/nix/ zu tun hat, ist der Speicher nach dem Booten innerhalb von <= 1 Stunde
komplett zu und das Mistteil fängt das swappen an - swappen für den Cache
halte ich für eine selten blöde Idee, was, ich weiss, mich in den Augen von
Hardcore-Linuxern, zu einem Dau macht der die Hände von Computern und die
Fortpflanzung den Pflanzen überlassen sollte) erzeugt eine Reaktion ähnlich
wie ein Scherz über Polen im Katholischen Landschwesternheim Woitila.

Der SMTP-Server-Prozess belegt höchstens so viel, wie an Mails
/gleichzeitig/ ankommen. Die größte Mail, die wir in den letzten 13 Monaten
hatten, war 55 mb groß; also vielleicht scheisse kodiert (7 Bit) und dann
doppelt im Speicher gehalten - das ergäbe ein max. Speicherverbrauch von 200
mb. Damals hat sich aber der Prozess nicht beendet! Der Mailserver hat auch
mal gut eine Joe-Job-Attacke eines Spammers überlegt, so mit bis zu 5000
Mails pro Tag. In den letzten Wochen hingegen war es bei uns relativ ruhig
(200 mails pro tag?) Die letzte Mail am Donnerstag war lächerliche 6k groß.
Ein paar Tage zuvor hat der SMTPServer-Prozess noch ganze 17mb RAM benutzt
gehabt, und in den Tagen dazwischen gab es keine einzige Mail > 2mb. Ich
halte es also erstmal für ziemlich unwahrscheinlich, daß die ganzen kleinen
Mails (ca. 200 stk) es schaffen sollen, die 768 mb zu verbraten. Ich hatte
im Frühjahr auch mal über ein paar Tage hinweg den Speicherverbrauch per Top
(Spalte RSS) angeschaut - da tut sich praktisch garnix.

1) Frage an die Pythonistas: Gibt es Erfahrungen mit solchen Problemen im
Zusammenspiel mit Pythonscripten?

2) Frage an die Pythonistas: Wie kann es bei all der
"wir-haben-garbage-collection-wir-kümmern-uns-nicht-um-deallocs"-Strategie
denn großmächtige Speicherleaks geben, zumal das Teil ja sonst wie gesagt
monatelang stabil läuft?

3) Frage an die Linuxianer unter den Pythonistas: Was tun? (Meine bisherige
Reaktion: Fluchen, Neustarten, und Gottvertrauen).

Ciao, Gerson





More information about the Python-de mailing list