Can't Fork / Server stirbt

paxos

New Member
Hallo,
mir ist es jetzt schon öfters passiert, dass mein vServer in einen halbtoten Zustand übergeht in welchem er keine neuen Prozesse mehr forken kann. In diesem Zustand hilft nur noch ein Reboot.

Ich nutze Debian Lenny; der Server steht bei vLinux.de; als Virtualisierung wird "CTX" verwendet - was das auch immer sein mag.

Die Ursache dieses Fehlers scheint wohl zu sein, dass der Ram vollläuft. Interessanterweise spuckt top / htop aber immer die Angabe aus, dass noch über 200 MB frei seien. Aber angeblich ist diese Angabe bei vServern meistens eine Lüge, oder?

Habe ein wenig nachgeforscht und bin auf die Ausgabe von "free" gestoßen. Im Normalzustand nach Neustart:

total used free shared buffers cached
Mem: 384000 59672 324328 0 0 0
-/+ buffers/cache: 59672 324328
Swap: 2176000 665864 1510136


Im Zustand des Nicht-Forken-Könnens:
total used free shared buffers cached
Mem: 384000 116500 267500 0 0 0
-/+ buffers/cache: 116500 267500
Swap: 2176000 2176000 0


Es sieht also so aus, als würde der Swapspace voll laufen. Aber laut der obigen Angabe ist dieser ja über 2 Gigabyte groß - kann ich mir also nicht vorstellen?

Ein Swapfile selbst anlegen funktioniert ebenfalls nicht, da mir dazu wohl die Rechte fehlen (ich bin allerdings Root).

swapon -s spuckt folgendes aus:
Filename Type Size Used Priority
/dev/sda2 partition 7815612 3744532 -1
/dev/sdb2 partition 7815612 0 -2


Jetzt zu meiner Frage: Wie kann das sein? Wie kann ich das verhindern?

Ich kann diesen Fehler übrigens simulieren indem ich meinen Apache 50 Threads spawnen lasse. In wenigen Sekunden schrumpft der Swap von 2 GB auf 0 MB und die Kiste ist platt. Kann ja eigentlich nicht sein das der Apache derart viel Ram belegt, oder?

Hat irgendwer ein paar Tipps oder Hinweise wie ich mein System stabilisieren kann? Es kann einfach nicht sein, dass ich täglich prüfen muss ob das Teil noch läuft oder nicht....

Vielen Dank!!
 
Das Problem ist wahrscheinlich, dass der Vserver an seine zugesicherten Resourcengrenzen stößt. Dabei ist das von dir beschriebene Verhalten von dem Server völlig normal.
 
SWAP bei einem vServer ist kein zugesicherter Speicher, das ist meistens einfach echter Ram, den sich alle vServer Kunden auf einem Node teilen. Von daher solltest du alles immer so auslegen, dass es mit dem garantiertem Ram auskommt. Ich vermute einmal, dass du deinen Apache nicht speziell konfiguriert hast, denn bei den meisten vServern musst du die Konfiguration schön nach unten schrauben, wenn du nicht gerade 1GB Ram hast, sonst sind die Standardeinstellungen oft zu vergessen. Poste doch einmal einen Ausschnitt deiner /etc/apache2/apache2.conf (prefork oder worker MPM, je nachdem was du verwendest).


MfG Christian
 
Das Interessante ist ja, dass noch jede Menge eigener RAM frei ist und nur der Swap Space voll ist. Und trotzdem stirbt das Gerät....

Apache läuft afaik als Prefork:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Ram Fresser sind aber eher die unzähligen mySQL Childs die dauernd im Sleep laufen.

Aber wie gesagt, weis nicht ob das wirlich das Problem ist. Den RAM ist ja noch frei. Theoretisch. Glaub ich muss weg von den elenden vServern...
 
Back
Top