Thomas: Linux SWAP-Datei läuft über

Beitrag lesen

Moin zusammen,

ein riesen Problem verfolgt mich seit einigen Wochen.

Vor langer Zeit habe ich viele viele Perl-Skripte geschrieben, die recht komplex über ASCII-Dateien eine "Datenbank" realisieren. Auf der damaligen Maschine (LINUX-RedHat, 233er RISK, 64MB Arbeitsspeicher) lief es dann viele Monate lang gut. Jetzt habe ich die komplette Präsentation auf einen anderen Rechner portiert (LINUX-RedHat, DUAL-Prozessor, 1GB(!) Arbeitsspeicher) und es funktioniert mehr schlecht als recht.

Regelmässig wird irgend ein Prozess nicht vernünftig beendet und schreibt den Speicher und(!) die SWAP-Datei komplett voll und belastet die CPU mit 100%.

In den bis jetzt entlarften Skripten wird meist nur eine Datei geöffnet, jede Zeile als Variable aufgenommen, diese auf verschiedene Art und Weisen bearbeitet und am Ende wieder geschrieben. Mal direkt überschrieben, mal mit einer Tmp-Datei mit umbenennen. Beides macht diesen Fehler. Die Files sind max. ca. 200kB gross.

Nach besten Wissen und Gewissen habe ich versucht bei Schreib- oder Lesefehlern per "die" den Prozess zu stoppen. Jede geöffnete Datei wird per "flock,2" gesperrt. Es werden max. 2-4 Dateien gleichseitig geöffnet. Manchmal warten die Skripte auf eine Freigabe der Datei und versuchen es mehrfach, aber max. 10x sonst "die". Der Verdacht, dass es sich um Datei-Rechte-Problem handelt, hat sich auch nicht bestätigt. Die Zugriffe sind nicht so hoch, das ich annehmen muss, das zuviele Dateien geöffnet werden. Laut allen Dokus, die ich bisher fand, braucht(kann) man bei Perl keine Arbeitsspeicherfreigabe(?) realisieren.

Nun steigt mir der Provider langsam aufs Dach, weil der Shared-Server deshalb recht oft steht und neu gestartet werden muss.

Das ist mein Problem in Kürze. Sonst würde ich morgen noch schreiben. Vielleicht hat jemand einen Tip, in welche Richtung ich weiter forschen kann. Oder einen netten Link, in dem ein ähnliches Problem beschrieben wird. Wenn Ihr noch Fragen habt? Bitte! Ich stehe wirklich vor einem Rätsel!!

Gruss

Thomas