Andre: IIS 6, w3wp.exe, Speichernutzung wird immer größer

Hallo,

ich brauche eure Hilfe.

Folgendes ist gegeben.

  • IIS 6
  • Windows Server 2003 R2
  • PHP

eine Seite die per Javscript in bestimmten abständen ein PHP-Script in einem PopUp(PopUp damit ich's wieder schließen kann, ohne nachfrage!) öffnet. Das Script wird ausgeführt, und ruft sich selber mit bestimmten Parametern* andauernd auf bis eine bestimmte bedingung erfüllt ist.

* Das sind GET Parameter die ein Datum erhalten weil ich nicht alle Daten die ich benötige auf einmal abarbeiten kann, weil die Datenmenge zu groß ist und ein Time Out die Folge ist. Deshalb bearbeite ich die Daten Stück für Stück.

Wenn die Bedingung erfült ist wird ein neues PopUp geöffnet mit einem weiteren Script und das erste PopUp wird geschlossen.

Das 2te Script funktioniert so wie das erste und dann wird ein drittes Script mit der selben methode aufgerufen und ausgeführt. Nach dem dritten ist schluss und es wird dann auch dieses PopUp geschlossen.

Somit läuft jetzt wieder nur die eine einfache Datei in einem Browser Fenster, die den JavaScript Code zum zeitgesteuerten Aufruf enthält.

Nach ein bestimmten Zeit geht das ganze von vorne los.

zur Info: die Scripte setzten Daten zusammen und fügen sie in eine MySQL Datenbank.

Für die "Webseite" hab ich ein Anwendungspool mit 3 Arbeitsprozessen im IIS eingestellt.

Das Problem an dem ganzen ist, die w3wp.exe wird immer größer und größer (vom Speicherverbauch).
Ich verfolge das ganze im Taskmanager und würde gerne wissen wie ich diesen Speicherverbrauch in den Griff bekomme.
Die Scripte werden ja extra wegen der Speicherschonung in ein PopUp geöffnet damit ich es anschließend wieder schließen kann.
Das einzige was immer geöffnet ist, ist die Seite mit meiner zeitsteuerung.

Kann mir da jemand helfen?

Danke schon mal im vorraus.

Gruß

  1. Yerf!

    eine Seite die per Javscript in bestimmten abständen ein PHP-Script in einem PopUp(PopUp damit ich's wieder schließen kann, ohne nachfrage!) öffnet. Das Script wird ausgeführt, und ruft sich selber mit bestimmten Parametern* andauernd auf bis eine bestimmte bedingung erfüllt ist.

    Die wichtige Frage wäre hier, wie dieser Aufruf geschieht.

    Die Scripte werden ja extra wegen der Speicherschonung in ein PopUp geöffnet damit ich es anschließend wieder schließen kann.

    Ob die Seite sofort wieder geschloßen oder noch ewig angezeigt wird ist dem Server egal. Für den zählen nur die Requests und die daraus resultierenden Prozesse/Threads. Die werden mit abschluss der Übertragung beendet, aber nicht unbdingt sofort, wenn wärend der Übertragung das Browserfenster geschlossen wird.

    Kann mir da jemand helfen?

    Es gilt zu klären, wiviele Prozesse tatsächlich auf dem Server aktiv sind.

    Die 2. Frage ist noch, ob der Speicher tatsächlich unendlich anwächst oder irgendwann ein Maximum erreicht.

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Danke erstmal für die Antwort.

      Die wichtige Frage wäre hier, wie dieser Aufruf geschieht.

      per <meta http-equiv="refresh">

      Ob die Seite sofort wieder geschloßen oder noch ewig angezeigt wird ist dem Server egal.

      Ja das kann sein. Aber ich hatte den Eindruck das der IE damit nicht sonderlich gut klar kommt, wenn Seiten ewig offen sind. Der futtert sich dann nach ner Zeit mich Speicher voll. Anders ist es, zumindest nach meinen Beobachtungen, wenn man das mit einem PopUp realisiert das wieder geschlossen wird.

      Es gilt zu klären, wiviele Prozesse tatsächlich auf dem Server aktiv sind.

      meinst du die w3wp.exe ?
      Es sind 3 Stück die im TaskManager angezeigt werden. Alle in etwas gleich groß. bei 15.000K angefangen, mittlerweile alle drei (nach ca. 3 Std.) bei 75.000K

      Die 2. Frage ist noch, ob der Speicher tatsächlich unendlich anwächst oder irgendwann ein Maximum erreicht.

      Das kann ich leider nicht genau sagen. Soweit habe ich das ganze noch nicht genau beobachtet. Aber wenn ich mich nicht irre, killt der mir dann die Prozesse und erstellt neue, was dann wiederrum zu einer unerwünschten Fehlermeldung in der Ereignissen führt, weil der Anwendungspool unerwartet geschlossen wurde. Hatte ich schon des öffteren.

      1. Yerf!

        Die wichtige Frage wäre hier, wie dieser Aufruf geschieht.

        per <meta http-equiv="refresh">

        Auf dem Weg sollte eigetnlich sicher sein, dass die erste Verarbeitung sicher abgeschlossen ist, bevor die nächste startet.

        Ja das kann sein. Aber ich hatte den Eindruck das der IE damit nicht sonderlich gut klar kommt, wenn Seiten ewig offen sind. Der futtert sich dann nach ner Zeit mich Speicher voll. Anders ist es, zumindest nach meinen Beobachtungen, wenn man das mit einem PopUp realisiert das wieder geschlossen wird.

        Klingt aber eher nach einem IE-Problem unabhängig vom Server (Speicherlecks im JS-Code?)

        Es gilt zu klären, wiviele Prozesse tatsächlich auf dem Server aktiv sind.

        meinst du die w3wp.exe ?

        Ja, aber evtl. nicht nur die Prozesse, sondern auch die Threads die da laufen. Mittels perfmon.exe kann man sich recht viele Informationen über laufende Prozesse anzeigen lassen. Allerdings ist das recht aufwendig da gezielt etwas zu finden.

        Es sind 3 Stück die im TaskManager angezeigt werden. Alle in etwas gleich groß. bei 15.000K angefangen, mittlerweile alle drei (nach ca. 3 Std.) bei 75.000K

        Klingt recht ungesund nach einem Memory-Leak. Keine Ahnung ob und wie man sowas in PHP hinbekommt.

        Das kann ich leider nicht genau sagen. Soweit habe ich das ganze noch nicht genau beobachtet. Aber wenn ich mich nicht irre, killt der mir dann die Prozesse und erstellt neue, was dann wiederrum zu einer unerwünschten Fehlermeldung in der Ereignissen führt, weil der Anwendungspool unerwartet geschlossen wurde. Hatte ich schon des öffteren.

        Ah... ja, die automatischen Restarts ;-) Die kann man ja am Anwendungspool konfigurieren, aber eine wirkliche Lösung sind die nicht (höchstens das man sie mal auschaltet und schaut was passiert... ab so 800MB verabschieden sich ASP.NET-Prozesse übrigens so richtig ins Nirvana ;-)

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. Klingt aber eher nach einem IE-Problem unabhängig vom Server (Speicherlecks im JS-Code?)

          Kann ich mir nicht vorstellen. Der JS-Code ist minimal und tut eigentlich nicht mehr als das PopUp öffnen. (per setTimeout)

          Mittels perfmon.exe
          Allerdings ist das recht aufwendig da gezielt etwas zu finden.

          oh ja. Das kann ich mir vorstellen. Ich versuche es gerade ...

          Klingt recht ungesund nach einem Memory-Leak. Keine Ahnung ob und wie man sowas in PHP hinbekommt.

          Eben. Würde mich auch interessieren ob man sowas mit PHP hinbekommt.

          Ah... ja, die automatischen Restarts ;-) Die kann man ja am Anwendungspool konfigurieren, aber eine wirkliche Lösung sind die nicht

          Aber ohne gehts nicht, sonst platzt mir der Speicher :-)

          Sonst noch irgendwelche Ideen?

          Gruß

          1. Yerf!

            Mittels perfmon.exe
            Allerdings ist das recht aufwendig da gezielt etwas zu finden.

            oh ja. Das kann ich mir vorstellen. Ich versuche es gerade ...

            Wir waren da auch ne ganze Weile beschäftigt bis wir unser Problem mit ASP.NET eigekreist hatten...

            Sonst noch irgendwelche Ideen?

            ... aber bei PHP kann ich dir leider nicht weiterhelfen.

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
  2. Hallo,

    ich brauche eure Hilfe.

    Schlag nach beim Verursacher:

    http://support.microsoft.com/kb/916984/de

    Viele Grüße,
    Horst Haselhuhn

    1. Schlag nach beim Verursacher:

      http://support.microsoft.com/kb/916984/de

      Die Lösung lautet dort: Das neuste Service Pack installieren.
      Ich hab das SP2 aber schon drauf. Daher bringt das leider nichts.

      Trotzdem Danke

      Gruß

      1. Yerf!

        http://support.microsoft.com/kb/916984/de

        Die Lösung lautet dort: Das neuste Service Pack installieren.
        Ich hab das SP2 aber schon drauf. Daher bringt das leider nichts.

        Ich hab mir das grad auch mal angeschaut... das bezieht sich speziell auf ein Problem von ASP. Das dürfte also PHP gar nicht betreffen.

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    2. Hallo Forum

      http://support.microsoft.com/kb/916984/de

      Das gibts doch wohl nicht. Hat irgendjemand verstanden, worum es in diesem Artikel geht? Wenn man als "Weltfirma" keine Resourcen hat, um englische Texte zu übersetzen, sollte man es lassen und einfach bloss schreiben: sorry this document is available in English only - oder so ähnlich (Ja, mein Englisch ist auch nicht so toll, aber bestimmt besser, als das Deutsch in dem verlinkten Dokument...) Nu ja, danke für das *g* zur Wochenmitte Microsoft ;-)

      mbr

  3. Hat noch jemand eine Idee wie man mein Problem lösen kann?
    (siehe Eröffnungspost)

    Memory-Leak mit PHP. Ist das möglich?

    Danke.

    Gruß

  4. Muss/Kann man mit PHP verwendeten Speicher für Variablen usw.. wieder freigeben nach ende eines Scriptes?

    Muss man das überhaupt. Ich glaub mich erinnern zu können das PHP das schon automatisch macht.

    Wie kann sonst der Speicher volllaufen wenn PHP brav den Speicher wieder freigibt?

    MySQL? Gibt es hier irgendwas zu beachten.

    Ich hoffe mir kann jemand weiterhelfen.
    So langsam verzweifle ich an dem ganzen.

    Danke.

    Gruß

  5. oder kann hier mir wirklich keiner einen Tip geben?
    Ich will keinen neuen Thread aufmachen (werd ich auch nicht) aber der hier ist schon so weit unten :-(

    Bitte wenn noch irgendjemand zu dem ganzen Thema etwas weiß, bitte helft mir.

    Gruß

    1. Tach,

      oder kann hier mir wirklich keiner einen Tip geben?
      Ich will keinen neuen Thread aufmachen (werd ich auch nicht) aber der hier ist schon so weit unten :-(

      dein Thread ist bei mir noch im oberen Viertel der Hauptseite; vermutlich ist dein Thema einfach zu speziell, der IIS ist nunmal als Webserver in Verbindung mit PHP deutlich weniger verbreitet als der Apache.

      mfg
      Woodfighter

      1. Hallo Jens,

        dein Thread ist bei mir noch im oberen Viertel der Hauptseite; vermutlich ist dein Thema einfach zu speziell, der IIS ist nunmal als Webserver in Verbindung mit PHP deutlich weniger verbreitet als der Apache.

        Eventuell wäre es für Andre ja eine Option, von IIS + PHP auf Apache + PHP umzusteigen?

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        panic("Oh boy, that early out of memory?");
                linux-2.2.16/arch/mips/mm/init.c
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)