Stefan Muenz: Memory-size-exhausted-Problem

Liebe Forumer,

endlich hab ich mal ein PHP-Problem, bei dem ich wirklich nicht mehr weiter weiss.

Auf einem Testserver entsteht bei einem bestimmten, reproduzierbaren Programmabschnitt das Problem auf, dass der PHP-Speicher ueberlaeuft. Er ist mit 32 MB pro Script (INI-Einstellung) eigentlich sehr grosszuegig dimensioniert. Komischerweise tritt das Problem in meiner lokalen Testumgebung nicht auf, obwohl ich dort ebenfalls 32 MB Memory Limit fuer PHP eingestellt habe. Es gibt in dem betreffenden Programmabschnitt auch keine nennenswerten Mega-Schleifen, die immer fetter werdende Variablen produzieren oder aehnliches. Das Code-Debugging mit var_dump-Ausgaben im betreffenden Programmteil hat einen einwandfreien Programmablauf gezeigt.

Auf dem Testserver, wo das Problem auftritt, ist PHP 4.2.2 installiert, auf meinem lokalen Rechner laeuft 4.2.3. In beiden Faellen wird PHP unter Apache ausgefuehrt. Auf dem Testserver allerdings unter Linux, bei mir lokal unter Win 2000. Beide Rechner stehen nicht unter Traffic-Last, auch der Testserver nicht. Auf dem Testserver habe ich den Vorgang mal mit laufendem top-Kommando ueberprueft und festgestellt, dass der betroffene Apache-Prozess auf ca. 100 MB anwaechst und dann haengen bleibt.

Die PHP-Anwendung arbeitet uebrigens mit Sessions und MySQL-Anbindung. Wenn ich die Sessiondatei des Prozesses, der den Fehler verursacht hat, auf dem Server loesche, ist das Problem auf dem Server beseitigt, d.h. PHP tuts wieder und die Anwendung auch.

Meine Frage ist daher, ob das Problem irgendwas mit den erzeugten Sessions (die Session-Dateien sind ca. 3-6 KB gross) zu tun haben koennte, und ob jemand von euch schon mal aehnliche Probleme hatte.

viele Gruesse
Stefan Muenz

  1. Hi Stefan!

    endlich hab ich mal ein PHP-Problem, bei dem ich wirklich nicht mehr weiter weiss.

    scheint nicht oft zu passieren ;-)

    Naja, ich hatte noch nicht so ein Problem, es hört sich ein bisschen nach einem Bug an, zumindest wenn Du definitiv auschließen kannst dass da irgend ne Schleife Amok läuft oder sowas. Aber das ist ja doch eher unwahrscheinlich wenn es unter Windows läuft, trotzdem würde ich es nicht ausschließen, ich tippe aber eher auf einen Bug.

    Ich würde folgendes probieren:
    1. unter http://bugs.php.net/ suchen ob der Fehler evtl. bekannt ist, ich habe auf den ersten Blick nichts gefunden.
    2. PHP 4.3.2 installieren um zu gucken ob es damit geht(vielleicht wurde der Bug behoben - wenn es denn einer war)
    3. Wenn das alles nichts hilft, versuchen den Fehler einzukreisen, also nach und nach alles rausschmeißen was vermutlich nichts damit zu tun hat, oder nur Teile des Scriptes auführen, und wenn das Problem nicht mehr auftitt weißt Du zumindest ungefähr an welchem Stück Code es möglicherweise liegt.

    Leider kann ich auch nicht mehr sagen, aber vielleicht weiß ja jemand anderes mehr.

    Viele Grüße
    Andreas

  2. Holladiewaldfee,

    kommt das (http://bugs.php.net/bug.php?id=20986) da ungefähr hin?

    Der Fall wurde bei RedHat diskutiert (http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=70846). Soweit ich das verstanden habe entsteht das Fehlverhalten zusammen mit libmm. Man müsste also PHP mit --without-mm kompilieren um den Fehler zu umgehen oder eben libmm aktualisieren (http://rhn.redhat.com/errata/RHBA-2002-273.html).

    Vielleicht hilft Dir das.

    Ciao,

    Harry

    --
      Intelligenz ist nicht zwingend etwas positives.
      Man weiß erst, was man hatte, wenn man es verloren hat.
  3. Hallo Leuts,

    danke fuer die Antworten. Das Problem war letztlich doch "trivial". Auf dem Server fehlte eine Datenbanktabelle, in die das Script Daten schreibt. Allerdings ist dabei normalerweise ein Error-Zweig notiert, in den das Script gelangen sollte, mysql_query() kein Ergebnis liefert. Dieser Script-Teil kam aber offenbar nicht mehr zum Einsatz - vorher produzierte PHP wohl irgendeine interne Endlosschleife.

    viele Gruesse
     Stefan Muenz

    1. Hallo... ähm ... also dazu unten...

      danke fuer die Antworten. Das Problem war letztlich doch "trivial". Auf dem Server fehlte eine Datenbanktabelle, in die das Script Daten schreibt. Allerdings ist dabei normalerweise ein Error-Zweig notiert, in den das Script gelangen sollte, mysql_query() kein Ergebnis liefert. Dieser Script-Teil kam aber offenbar nicht mehr zum Einsatz - vorher produzierte PHP wohl irgendeine interne Endlosschleife.

      Na, da konnte dir ja der beste Bugtracker nicht helfen.

      Aber was mich viel mehr interessiert... gibt's da etwas was wir nicht wissen, Wilfan? Stefhelm? ;-)

      Grüße aus Barsinghausen,
      Fabian

      --
      Petition für SelfTransparenz! Jetz!
      1. habe d'ehre

        Aber was mich viel mehr interessiert... gibt's da etwas was wir nicht wissen, Wilfan? Stefhelm? ;-)

        fg

        --
        carpe diem Wilhelm
        1. Moin!

          Ha! Nicht nur, dass hier jetzt alle assimiliert werden, nein, sie versuchen es zu verheimlichen, damit auch keiner ihre Links anklicken kann!

          Viele Gruesse,

          Einbecker

          P.S.: Hmmm... "Fehler: Sie haben ein zu kurzes Thema angegeben... Wie hat er das nur gemacht? Ich wuerd ja gern nen Bugreport machen, aber bevor *sie* mir nicht verraten, wie *sie* das gemacht haben....

          P.P.S.: Unsauberes Postingformat - das ich nicht lache!

          --
          ... auch wenn ich eigentlich ja Dresdener bin...
          1. habe d'ehre

            Ha! Nicht nur, dass hier jetzt alle assimiliert werden, nein, sie versuchen es zu verheimlichen, damit auch keiner ihre Links anklicken kann!

            Wenn ich wuesste wie das mit dem fehlenden Subject passierte, ich waere ein zufriedener Mensch. :-)

            Folgende Vorgehensweise wurde verwendet:

            • Anmeldung mit my
            • Schreiben Text
            • Vorschau generiert
            • Bereich geaendert
            • voreingestellten Namen geaendert
            • Nachricht gesendet

            und schwupps war das Subject im Nirvana. Bug oder Feature, wer weiss das schon. *g*

            --
            carpe diem
            Wilhelm
        2. Hallo Forum,

          habe d'ehre

          Aber was mich viel mehr interessiert... gibt's da etwas was wir nicht wissen, Wilfan? Stefhelm? ;-)

          *fg*

          das fullquote war beabsichtigt und ist unter [pref:t=53812&m=299478] in der originalform nachzulesen.

          lg
          Siramon - wieder zurück

          --
          Fehler
          Sie haben ein zu kurzes Thema angegeben.
          1. Moin!

            das fullquote war beabsichtigt und ist unter [pref:t=53812&m=299478] in der originalform nachzulesen.

            Mein Gott, dass war doch nur fuer Pro-Account-Inhaber ersichtlich - das darf man doch nicht oeffentlich machen. Und: Ja, ich habe einen Pro-Account - aus Gruenden der militaerischen Geheimhaltung durfte dies nicht bekannt gegeben werden. Und so wird auch jeder, der diese Nachricht kriegt, alsbald Besuch von der mobilen SelfArmee kriegen...

            Siramon - wieder zurück

            aus der Schweiz? ;-)

            Viele Gruesse,

            Einbecker

            --
            ... auch wenn ich eigentlich ja Dresdener bin...