Wieso wird mein Python IRC Bot immer gekillt (SIGKILL)?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
andihit
Beiträge: 42
Registriert: 06.03.2005 18:01:54
Wohnort: Linz-Land (Österreich)
Kontaktdaten:

Wieso wird mein Python IRC Bot immer gekillt (SIGKILL)?

Beitrag von andihit » 18.09.2006 19:45:03

Hi,

Ich habe ein Problem mit meinen Python Scripts. Genau: Meinen IRC-Scripts in Python.
Denn jedesmal nach einigen Minuten (ca. 10-15) wird der Prozess gekillt (der IRC-Socket hatte keine Verbindung, außer die ping/pongs).

Da versuchte ich es mal mit strace, und dabei kam heraus:
(letzten relevanten Zeilen)

Code: Alles auswählen

select(0, NULL, NULL, NULL, {1000, 0} <unfinished ...>
+++ killed by SIGKILL +++
Das select dürfte normal sein, da es auf Verbindungen wartet (genau: z.Z. 3 gleichzeitig).
Das wichtigere meines Wissens: unfinished und "killed by SIGKILL". Jetzt möchte ich gerne wissen wieso es gekillt wird.

Auch nei einem

Code: Alles auswählen

nice -n 20 strace python ircbridge.py
wird der Prozess gekillt (ja, das nice ist keine Lösung, aber ich dachte evtl verbrauchte es zu viel CPU oder RAM oder sowas (ist ein vServer), aber anscheinend brachte das auch nichts.)


Vielen Dank für Antworten,
mfG Andreas
vServer debian stable
Workstation Win XP, ubuntu
Notebook Win XP, ubuntu

http://www.andihit.net - meine Projekte

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 18.09.2006 20:59:44

Hat vielleicht dein Provider eine maximale Laufzeit für Prozesse festgelegt?

Benutzeravatar
andihit
Beiträge: 42
Registriert: 06.03.2005 18:01:54
Wohnort: Linz-Land (Österreich)
Kontaktdaten:

Beitrag von andihit » 19.09.2006 16:25:54

hi,
Joghurt hat geschrieben:Hat vielleicht dein Provider eine maximale Laufzeit für Prozesse festgelegt?
Also das dürfte nicht sein, da ja Apache2, Exim, mein Bouncer etc. auch ohne Probleme läuft.

mfG, Andreas
vServer debian stable
Workstation Win XP, ubuntu
Notebook Win XP, ubuntu

http://www.andihit.net - meine Projekte

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 19.09.2006 16:38:13

Unter welchem User laeuft denn dein Skript?
Kannst du als dieser User mal

Code: Alles auswählen

ulimit -a
eingeben und das Ergebnis hier posten?

Benutzeravatar
andihit
Beiträge: 42
Registriert: 06.03.2005 18:01:54
Wohnort: Linz-Land (Österreich)
Kontaktdaten:

Beitrag von andihit » 19.09.2006 16:57:01

hi,
nepos hat geschrieben:Unter welchem User laeuft denn dein Skript?
Kannst du als dieser User mal

Code: Alles auswählen

ulimit -a
eingeben und das Ergebnis hier posten?
Das läuft als normaler User, also kein root (was ja eigentlich auch gut sein soll, bzw ist).

Code: Alles auswählen

andihit@v704:~$ ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) unlimited
virtual memory        (kbytes, -v) unlimited
Ist der Output von dem ulimit -a.

//EDIT: Hab auch noch geschaut, ob etwas in den Logs ist. Der Kernel-Log-Daemon wird nicht gestartet und in syslog ist nichts relevantes.
Im RAM waren noch 10MB frei, allerdings einige Zeit nach dem Script waren wieder 30MB, jetzt sogar 225MB - aber ich befürchte das ist die Anzahl des gesamten Servers, denn mein Server darf nur 120MB RAM zugeteilt werden.
Gibt's ein Programm dafür, um zu sehen, wieviel RAM ein Programm benötigt?

//EDIT2: Ja, das ist der Speicher des Gesamtsystems, denn bei Total wird 8GB angezeigt, und so viel hat der Server. (btw, kanns sein weil der ganze Server nur noch 10MB frei hatte, dass er meinen Prozess getötet hat?)

//EDIT3: Ich muss doch irgendwie zurückverfolgen können, von wo das Signal gesendet wird?

//EDIT4: Allerdings werden aber meine anderen Prozesse nicht abgebrochen..


mfG, Andreas
vServer debian stable
Workstation Win XP, ubuntu
Notebook Win XP, ubuntu

http://www.andihit.net - meine Projekte

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 19.09.2006 20:16:32

Hm, wenn dem Kernel wirklich der Speicher ausgeht, dann killt er schon mal einen Prozess. Wonach er den auswaehlt weiss ich leider nicht. Aber dann sollte in den Logs normal was dazu stehen. Wobei, wenn du keine Kernel-Logs zu Gesicht bekommst ist das auch wieder so ne Sache...

Benutzeravatar
andihit
Beiträge: 42
Registriert: 06.03.2005 18:01:54
Wohnort: Linz-Land (Österreich)
Kontaktdaten:

Beitrag von andihit » 20.09.2006 19:03:06

Hab jetzt den Kernel log zum laufen gebraucht - aber da steht gar nichts drinnen.

Code: Alles auswählen

Sep 20 18:42:45 v704 kernel: Cannot find map file.
Sep 20 18:42:45 v704 kernel: No module symbols loaded - kernel modules not enabled.
Evtl liegt das auch daran dass es ein vServer ist und der natürlich den Kernel für den ganzen Server hat.

mfG, Andreas
vServer debian stable
Workstation Win XP, ubuntu
Notebook Win XP, ubuntu

http://www.andihit.net - meine Projekte

Antworten