Hoagie: Win2003 server und PHP Performance Probleme

Hallo Leute,

Folgendes seltsames phänomen tritt bei mir auf:
hab auf ner schön schnellen maschine (dual xeon 2.6 GHz, 2GB ram...) php (4.3.4/4.3.3) als cgi modul installiert, unter win2003 server mit IIS 6.
nun laufen allerdings scripte die auf der alten maschine mit win2k server am IIS5 mit einwandfreier geschwindigkeit gelaufen sind, plötzlich elendiglich langsam.
hatte zuerst 4.3.4 im einsatz, hab dann allerdinga auf 4.3.3 downgegradet, weil die alte maschine auch damit lief, allerdings ohne erkennbaren performance gewinn...

hat jemand eine erklärung dafür, das sich seiten die früher 2-3 sekunden gebraucht haben, plötzlich ca. 10 sekunden benötigen?

wäre über jeglichen tipp dankbar

grüsse,

hoagie

  1. Hi,
    das kann viele Gruende haben. Am besten, Du jagst deine Sktipte mal durch einen Profiler. Moegliche Ansatzpunkte sind: Datenbankzugriffe, Disk I/O, remote Netzwerkzugriff, Rekursion, CGI. Ueberlege dir mal, wenn es wirklich auf Performance ankommt, auf ein SAPI Modul umzusteigen, mindestens aber FastCGI. Am besten das ganze noch unter UNIX, aber du wirst deine Gruende haben.

    Gruss,
    Jan
    --

    1. hello,

      Am besten, Du jagst deine Sktipte mal durch einen Profiler.

      was verstehst du darunter?

      Moegliche Ansatzpunkte sind: Datenbankzugriffe,

      hab ich minimiert bis zum geht nicht mehr, hab aktuell gerade mal 1 select das aktuell aufgerufen wird, und selbst die ist als sicht im mssql abgespeichtert.

      Disk I/O,

      glaub nicht das die platten zu langsam sind, nagelneue sATA platten

      remote Netzwerkzugriff,

      hab das gleiche problem auch lokal auf der maschine über localhost...

      »»Rekursion,
      kein script hat ne verwendet ne rekursion

      CGI. Ueberlege dir mal, wenn es wirklich auf Performance ankommt, auf ein SAPI Modul umzusteigen, mindestens aber FastCGI.

      hab ich schon überlegt, allerdings sollen die isapi module lt. php.net nicht produktions stable sein.

      Am besten das ganze noch unter UNIX, aber du wirst deine Gruende haben.

      jo, hab ich *G*
      aber danke für die tipps

      lg,
      hoagie

      1. Hi,

        was verstehst du darunter?

        Ein Tool, dass die Ausfuehrungsgeschwindigkeit jedes einzelnen Schrittes deines Scripts anzeigt, waehle zwischen Zend [1] und xDebug [2]

        »»hab ich minimiert bis zum geht nicht mehr, hab aktuell gerade mal 1 select das aktuell aufgerufen wird, und selbst die ist als sicht im mssql abgespeichtert.

        MSSQL also, es gibt schnelleres, habe ich mir sagen lassen.

        glaub nicht das die platten zu langsam sind, nagelneue sATA

        platten

        Messen, nicht glauben.

        remote Netzwerkzugriff,
        hab das gleiche problem auch lokal auf der maschine über localhost...

        Ich meinte eher, dass die Scripte irgendwas remote veranstalten koennten. Muss aber nich.

        CGI. Ueberlege dir mal, wenn es wirklich auf Performance ankommt, auf ein SAPI Modul umzusteigen, mindestens aber FastCGI.

        hab ich schon überlegt, allerdings sollen die isapi module lt. php.net nicht produktions stable sein.

        Laut balblabla ist Windows nicht produktionsstabil. Das Apache Modul unter Win und der IIS Modul laufen ordentlich. Vom IIS is allerdings wie ueblich abzuraten.

        Gruss,
        Jan
        --
        [1] http://www.zend.com/
        [2] http://www.xdebug.org/

        1. hello nochmal,

          Ein Tool, dass die Ausfuehrungsgeschwindigkeit jedes einzelnen Schrittes deines Scripts anzeigt, waehle zwischen Zend [1] und xDebug [2]

          dank, werd ich gleich mal reinziehen.

          MSSQL also, es gibt schnelleres, habe ich mir sagen lassen.

          jo, gibts, aber auch langsameres :)

          Messen, nicht glauben.

          klar, aber ich kenne keine modernen platten die ein paar k dateien nicht innerhalb von millisekunden einlesen würden. und ich hab die platten gemessen, sie sind schnell genug...

          Ich meinte eher, dass die Scripte irgendwas remote veranstalten koennten. Muss aber nich.

          achso, ok, nö, passiert aber nicht, läuft alles lokal....

          Vom IIS is allerdings wie ueblich abzuraten.

          kann mich normalerweise nicht über den iis beschweren, hat bis dato immer einwandfrei ohne gröbere troubbles geklappt.

          ausserdem gehts mir grundsätzlich nicht um das problem "nimm xxx damit gehts" sondern ich muss es mit diesen vorgaben hinbekommen :)

          aber auf jeden fall danke
          lg,
          hoagie

          1. Hi,

            MSSQL also, es gibt schnelleres, habe ich mir sagen lassen.
            jo, gibts, aber auch langsameres :)

            das will aber niemand. Also miss mal nach, ob es vielleicht die DB ist. Notfalls Caching einbauen.

            klar, aber ich kenne keine modernen platten die ein paar k dateien nicht innerhalb von millisekunden einlesen würden. und ich hab die platten gemessen, sie sind schnell genug...

            Du sollst kucken, wieviel Zeit dein Script fuers Disk I/O verbraet. I
            Ich glaube dir, dass die Platten schnell sind, aber da steckt so viel Software dawischen, dass es sich lohnt, das zu pruefen.

            kann mich normalerweise nicht über den iis beschweren, hat bis dato immer einwandfrei ohne gröbere troubbles geklappt.

            bist du noch alleine Admin auf der Kiste? (SCNR)

            ausserdem gehts mir grundsätzlich nicht um das problem "nimm xxx damit gehts" sondern ich muss es mit diesen vorgaben hinbekommen :)

            Wenn Deine "Vorgaben" Designfehler haben, die andere Moeglichkeiten beseitigen (CGI vs. Modul oder FastCGI), dann macht es keinen Sinn daran festzuhalten. IMHO.

            Gruss,
            Jan

            1. nabend :)

              das will aber niemand. Also miss mal nach, ob es vielleicht die DB ist.

              isses nicht, weil selbst nach rausnahme aller db abfragen auch nicht relevant schneller wurde....

              Du sollst kucken, wieviel Zeit dein Script fuers Disk I/O verbraet.

              werd ich mal machen :)

              bist du noch alleine Admin auf der Kiste? (SCNR)

              hm?

              Wenn Deine "Vorgaben" Designfehler haben, die andere Moeglichkeiten beseitigen (CGI vs. Modul oder FastCGI), dann macht es keinen Sinn daran festzuhalten. IMHO.

              schon klar, ich wollte damit nur sagen das es mir nix bringt das es unter linux mit dem apachen läuft, da die vorgaben in dem fall eben iis und mssql is... werd mal probieren php als isapi zu konfigurieren...

              grüsse
              hoagie

              1. Hi,

                bist du noch alleine Admin auf der Kiste? (SCNR)
                hm?

                Der IIS ist bekannt fuer Sicherheitsluecken.

                schon klar, ich wollte damit nur sagen das es mir nix bringt das es unter linux mit dem apachen läuft, da die vorgaben in dem fall eben iis und mssql is... werd mal probieren php als isapi zu konfigurieren...

                Ich werde mich hueten Dir Linux zu empfehlen. Es spricht nichts gegen Apache auf Windows (ausser den bekannten Gruenden, aber das tut hier nix zu Sache). Es bleibt auch immernoch FastCGI.

                Ausserdem ist es besser erst zu Profilen und dann anfzufangen zu basteln. Spart Nerven :),

                Gruss,
                Jan
                --

                1. grüsse,

                  Der IIS ist bekannt fuer Sicherheitsluecken.

                  i know...  aber wenn man immer brav patcht, kann man einigermassen damit leben.

                  »»Es bleibt auch immernoch FastCGI.

                  server api ist bei mir eh cgi/fastcgi

                  Ausserdem ist es besser erst zu Profilen und dann anfzufangen zu basteln. Spart Nerven :),

                  vermutlich :)

                  was seltsam ist: nach erneuter installation von php läuft das ding jetzt lokal mit einwandfreier performance...
                  ist zwar schön, aber nicht gerade befriedigend falls dieses phänomen wieder auftritt...

                  danke auf jeden fall

                  grüsse, hoagie

                  1. Hi,

                    server api ist bei mir eh cgi/fastcgi

                    mir scheint, dir ist der Unterschied nicht bewusst, siehe auch [1].

                    Gruss,
                    Jan
                    --
                    [1] http://fastcgi.com/

                    1. grüsse.

                      mir scheint, dir ist der Unterschied nicht bewusst, siehe auch [1].

                      werd mich mal schlau machen

                      danke,
                      hoagie

                    2. Hi Jan!

                      server api ist bei mir eh cgi/fastcgi

                      mir scheint, dir ist der Unterschied nicht bewusst, siehe auch [1].

                      Was ich nicht so ganz verstehe, in http://de3.php.net/release_4_3_0.php steht:

                      " several deprecated extensions (aspell, ccvs, cybercash, icap) and SAPIs (fastcgi, fhttpd) are removed"

                      Und im Manual steht (http://de3.php.net/manual/de/install.configure.php):

                      --with-fastcgi

                      Erstellt PHP als ein FastCGI Programm. Ist seit PHP 4.3.0 nicht mehr verfügbar, stattdessen benutzen Sie bitte --enable-fastcgi.

                      --enable-fastcgi

                      Ist dies aktiviert, wird das CGI Modul mit Unterstützung für FastCGI erstellt. Verfügbar seit PHP 4.3.0.

                      Was heißt das jetzt genau? War FastCGI früher ein eigenes SAPI-Binary, und seit 4.3 ist es kein eigenes Modul mehr sondern das CGI-Binary wird nur entsprechend verändert so dass es sich über FastCGI einbinden lässt?

                      Viele Grüße
                      Andreas