Fatal error: Out of memory (?)

  • Hi,


    in letzter Zeit erhalte ich häufig Fehlermeldungen wie

    Zitat

    ( ! ) Fatal error: Out of memory (allocated 262144) (tried to allocate 1513752 bytes) in /var/www/speed/index.php on line 60

    Das stimmt, der Speicher meines Servers (1 GB) ist tatsächlich voll. Was kann ich dagegen tun? Ich habe bereits den Cache des MySQL-Servers von 386MB auf 256MB reduziert... und ich weiß auch überhaupt nicht, was da so viel Speicher braucht? Aus der htop-Anzeige jedenfalls werde ich nicht schlau, der Verbrauch von mysqld und apache2 scheint mir recht moderat zu sein...?
    Hier ein Screenshot (zum Zeitpunkt des Screenshots war der Speicher gerade mal ausnahmsweise *nicht* voll, aber wenn er voll ist, ist der Verbrauch von apache und mysqld auch nicht anders):
    [Blockierte Grafik: http://files.feorar.org/screen1.png]


    Hat jemand Tipps für mich, wie ich das Problem beheben könnte? :p


    Viele Grüße,
    Sven

  • Du könntest zum Beispiel deinem Indianer (Apache) sagen, dass er nicht mehr so viele Kinder Forken soll.
    In dem Standard SysCP Image läuft das über Prefork Modul, und sieht in der apache2.conf so aus:

    Bei dir kann man das natürlich wesentlich höher Einstellen. Aber ich habe nur 256MB RAM. ;)

  • Hi,
    Danke für den Tip ;)
    Hm, max_clients stand bei mir auf 250 :D
    Soviele brauche ich nie und nimmer. Ich hab das jetzt mal auf 25 reduziert, meinst du das hilft was...?
    Oder sollte ich eher StartServers reduzieren? ;)


    lg

  • ... es hilft definitiv was, dann wird's aber langsam... wohl weil nicht mehr alle Anfragen sofort beantwortet werden können...
    Ich hab's wieder auf 100 hochgestellt, jetzt läuft das Ganze zwar wieder flüssig, aber dafür ist der Speicher wieder voll. :D


    lg

  • Wenn das so ist, dann werde ich zunächst mal meine performancetechnisch schrecklichen Skripte überarbeiten. ;)
    Ich denke nämlich, dass da noch am meisten zu holen ist...


    Aber danke für die Ratschläge. :)


    Viele Grüße,
    Sven

  • Meinst du, das bringt was? Denn erstens sind das ja nur knapp 2 MB, und zweitens ist die Meldung ja "out of Memory" und nicht "Memory limit exceeded", oder sehe ich das falsch?


    Gruß,
    Sven

  • Zitat von [netcup] Alex;3265

    oder via Supportticket nach einem Ramupgrade fragen.


    Frage am Rande: Geht ein reines Ram-Upgrade eigentlich bei jedem vServer?
    Oder gibt es bei "kleineren" vServern immer nur die Möglichkeit des vServers Upgrades?



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • jetzt habe ich doch glatt vergessen auf den Thread zu antworten und finde den Antwort-Button nichtmehr (?)


    Wie aus deinem Screenshot hervorgeht, nimmt sich MySQL trotzdem knapp 50% des RAM. Das dürften bei 1024 MB / 100 * 50 = 512 MB sein. Irgentwas kann da also noch nicht stimmen an deinen Einstellungen.
    Oder vlt. musst du wirklich nochmal deine Programme überprüfen, ein paar Prozesse laufen ja länger als 0-1 sek. Oder ist das nur der Cache ? In dem Falle ist das aber ein völlig falsches verhältnis, den soviel Ram für einen Cache zu Nutzen ist meiner Meinung nach nicht zweckgemäß, zumindest wenn der Ram wie in deinem Falle an die Grenzen stößt.


    Du kannst im übrigen auch direkt mit PHP auf den Ram zugreifen: memcached sollte dir weiterhelfen. Das dürfte ein wenig Overhead wegnehmen, und du kannst bei memcached sehr schöne Begrenzungen setzen.


    Grüße,
    APUX

  • Zitat von APUX;3317

    fragen kostet nichts, ich glaube aber die Antwort ob das auch bei einem der 2€-Server möglich ist fällt recht eindeutig aus.


    An den 3€-vServer habe ich dabei auch nicht gedacht :D
    Ich habe jedenfalls schon vor einigen Tagen nachgefragt, lohnt sich nicht wirklich, da man um ein paar Euro mehr dann schon einen größeren vServer mit noch mehr Ram (, HDD Platz und CPU Leistung) bekommt. Ist also eher nur für den größten vServer eine nette Erweiterung ;)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)