Speicher voll

nh2

New Member
Hallo,
bei mir ist zu manchen Tageszeiten der Speicher komplett verbraucht (von 2GB noch 4MB frei, sagt mir mein Plesk-Speicherbalken).
Nun habe ich bei meinen Strato Power-Server A aber doch 128MB freien Speicher garantiert.

Wie kann ich überprüfen, ob der mir auch zugesichert wird bzw. wie kann ich anzeigen, wieviel Speicher ich im Moment verbrauche? free zeigt mir nur den Gesamtspeicher des physikalischen Servers also 2GB von 2GB verbraucht an.
 
DAs Linux den Speicher zu (fast) 100% belegt, ist normal. Es werden viele Dinge gecached. Solange die Swap Partition nicht staendig benutzt wird, ist alles okay.

Nun habe ich bei meinen Strato Power-Server A aber doch 128MB freien Speicher garantiert.
Das heisst nicht, dass du immer 128MB frei hast. Es bedeutet nur, dass dir mindestens 128Mb (insgesamt) zustehen.
 
Kann mir jemand eine Methode (z.B. ein Skript oder ein Programm) sagen, mit dem ich testen kann, ob ich soundso viel (z.B. 100MB) Speicher verwenden kann? Leztens habe ich nämlich von meinem Spamassassin die Meldung "system out of memory" bekommen, was mich dann doch beunruhigt hat.
 
Ginge zum Beispiel mit PHP.

Nimm einen Zeiger (String) und knall den voll. Gebe alle 2^10 oder besser 2^20 Zeichen etwas aus.


PHP:
<?php
$array=array();
for($i=0;1;$i++){
    $array.="1";
   if($i%1048576==0) echo ($i/1048576)." MB\n";
}
 ?>
Das startest du dann in der Shell mit "php DATEINAME"
Vergiss nicht in der php.ini den Wert von memory_limit auf die gewuenschte Grenze zu setzen.

Das Programm bricht ab, wenn kein freier Speicher mehr fuer dich vorhanden ist, oder die in der php.ini angegebene Grenze ereicht ist.
Als Ergebnis wirst du sicherlich aber keine 100MB bekommen, da bei dir ja sicherlich einiges laeuft.
 
Last edited by a moderator:
Wovon hängt die Geschwindigkeit ab, mit der das Skript ausgibt? Nur vom Schreiben in den Speicher? Bei mir kommt nämlich nur alle 2 Sekunden ein weiters MB dazu ...

Edit:
Noch ein anderes Problem:

Ich habe in der php.ini:
Code:
memory_limit = 100M

Aber er hört im Skript bei 31MB auf (32 MB war vorher das Memory_limit):
Code:
29 MB
30 MB
31 MB
Allowed memory size of 33554432 bytes exhausted (tried to allocate 1 bytes)

Ich hab auch schon den Server neugestartet, aber er behält das memory_limit bei 32 MB, obwohl die php.ini wie oben angepasst ist. Muss ich sonst noch wo was ändern, damit der das übernimmt?
 
Last edited by a moderator:
Bei mir kommt nämlich nur alle 2 Sekunden ein weiters MB dazu
Schau dir mal an, wie das Skriptchen funktioniert. Dann sollte klar sein, wie schnell es ist.

Die hier waere schneller
PHP:
<?php
$array=array();
for($i=0;1;$i++){
    $array.="1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
   if($i%1024==0) echo ($i/1024)." MB\n";
}
 ?>


Ich hab auch schon den Server neugestartet
Apache neu starten reicht.

aber er behält das memory_limit bei 32 MB, obwohl die php.ini wie oben angepasst ist. Muss ich sonst noch wo was ändern, damit der das übernimmt?
Sicher das die richtige php.ini genommen wird?
entweder:
php -c /PFAD/ZUR/php.ini test.php
oder versuche mal
php -n test.php (keine php.ini wird genommen)

[edit]
nur mal so zur Info: bei mir belegen spamd und clamav ca 180 MB RAM zur Zeit.
 
Last edited by a moderator:
Sauber, es geht (indem ich den Pfad zur PHP.ini angegeben habe)!
Ich kann sogar bis zu 192MB benutzen.
 
Ich kann sogar bis zu 192MB benutzen.
Das ist aber nicht garantiert.
Morgen bricht das Skript vielleicht schon bei 80 MB ab (je nachem wie die Gesamtresourcen des Host Systems aussehen).
 
Back
Top