Markus Bauer: Warum ist meine PHP Seite so langsam?

Hallo!

Mit der Zeit zuck' ich echt aus. Nicht nur, dass meine Seite langsam ladet, sie zeigt es auch an; ich messe die Dauer vom Anfang bis zum Ende und es nicht undenkbar, dass es >1 Sekunde dauert. Das ist nicht tragbar. Desweiteren messe ich die SQL Dauer und die Anzahl der Abfragen.

Die Ironie dabei ist aber, dass das hochkomplexe phpbb Forum um ein x-faches schneller ist, obwohl ich sogar - mehr als unelegant - die Header und die Footerseiten beim include mit ob_start/ob_get_content auffange und so in die Template Datei schreib.

Ich versteh nix mehr, das einzige, was ich weiss, ist, was in meinem Code nicht wirklich viel drinnen stehen kann, was lange dauert, in phpbb jedoch schon und trotzdem ist es so schnell obwohl die beiden Seiten die gleichen includes verwenden.

1.) Gibt es irgendein Programm zum "Debuggen" von php-Seiten? Mit dem ich dann definitiv feststellen kann, was das Übel ist.

2.) Ich finde (fast) nichts zu gutem PHP-"Stil" in Bezug auf Geschwindigkeit. Wie wird Code schnell? Ich denke mir, dass die ganze PHPBB Template Technologie eigentlich verdammt langsam sein muss aber trotzdem ist sie so schnell...ist das guter Stil? Wieso?
Ist es schlecht zu schreiben
for($i = 0; $i < count($array); $i++)
? Weil dann count() immer neu abgefragt werden muss oder ist sowas irrelevant.
Kennt jemand Seiten, die sich mit solchen Themen beschäftigen?

Vielen Dank, der an der Verzweiflung nahe markus

  1. 1.) Gibt es irgendein Programm zum "Debuggen" von php-Seiten?

    Probier mal Xdebug, www.xdebug.org.

    2.) Ich finde (fast) nichts zu gutem PHP-"Stil" in Bezug auf Geschwindigkeit.

    Dazu gibt es nicht sehr viel zu sagen. PHP-Code sollte in erster Linie lesbar sein. Kritisch ist alles, was mit SQL zu tun hat. Da sollte man besonders sorgfältig vorgehen und z.B. nur das Abfragen, was man wirklich braucht (also nicht "SELECT *" verwenden).

    Ist es schlecht zu schreiben for($i = 0; $i < count($array); $i++)?

    Das ist eine der wenigen Stellen, an denen man PHP-Code massiv (!) beschleunigen kann. Die Zählung mit count() dauert wahnsinnig lange.

    1. 1.) Gibt es irgendein Programm zum "Debuggen" von php-Seiten?

      Probier mal Xdebug, www.xdebug.org.

      Es gibt euch einige gute Profiler für PHP.

      http://sourceforge.net/projects/php-profiler/

      2.) Ich finde (fast) nichts zu gutem PHP-"Stil" in Bezug auf Geschwindigkeit.

      Dazu gibt es nicht sehr viel zu sagen. PHP-Code sollte in erster Linie lesbar sein. Kritisch ist alles, was mit SQL zu tun hat. Da sollte man besonders sorgfältig vorgehen und z.B. nur das Abfragen, was man wirklich braucht (also nicht "SELECT *" verwenden).

      Ist es schlecht zu schreiben for($i = 0; $i < count($array); $i++)?

      Das ist eine der wenigen Stellen, an denen man PHP-Code massiv (!) beschleunigen kann. Die Zählung mit count() dauert wahnsinnig lange.

      Für jede ausführung der for-Schleife wird count erneut ausgeführt.
      D.h. wenn ein count ca. 0.1 sek dauert. Dein Array aber 100 Werte hat dann dauert die gesamte for-Schleife 10 sek..

      Lösung 1:
      Die setzt vorher die größe des Array fest.

      $array_size = count($array);
      for($i = 0; $i < $array_size, $i++);

      Lösung 2: (die wahrscheinlich bessere)

      Einfach Foreach-verwenden

      foreach($array as $var)
      {
       // Code
      }

      mfg shexbeer

      1. Hello,

        Für jede ausführung der for-Schleife wird count erneut ausgeführt.
        D.h. wenn ein count ca. 0.1 sek dauert. Dein Array aber 100 Werte hat dann dauert die gesamte for-Schleife 10 sek..

        Wer kommt denn auf die Idee, dass ein Count 0,1 Sec dauern könnte? Wenn die Werte im Speicher stehen, dauert das nicht 1/1000 so lange.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Wer kommt denn auf die Idee, dass ein Count 0,1 Sec dauern könnte? Wenn die Werte im Speicher stehen, dauert das nicht 1/1000 so lange.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          Werte waren völlig aus der Luft gegriffen. Sollte nur zur verdeutlichung der Problematik helfen.

          mfg shexbeer

          1. Hello,

            Werte waren völlig aus der Luft gegriffen. Sollte nur zur verdeutlichung der Problematik helfen.

            Da bin ich ja beruhigt. ALles was im Speicher abläuft, ist bei PHP irrsinnig schnell, obwohl es ja eine Intrpreter-Sprache ist. Du kannst ja mal bis 1.000.000 zählen lassen und die Zeit stoppen.
            Dann baust Du noch ein zusätzliches If in die Schliefe ein und vergleichst. So kann man das mit allen Statements und Funktionen machen. nach und nach bekommt dann ein Gefühl dafür, wie teuer ein Statement ist.

            Die tsuersten sind die Dateioperationen. Man kann sich ja nie darauf verlassen, dass das File noch cached ist usf einem System, dass von mehreren Usern benutzt wird.

            Jeder Festplattenzugriff (Lesen) kostet z.B. 8,2 ms Wenn Du ein File also zeilenweise liest, dann ist das sehr teuer; wenn Du Pech hast, pro Zeile 8,2ms (8,2ms x 10.000 = 82s). Wenn du die Datei aber komplett einliest, kostet es für 10.000 Zeilen (1MB) z.B. nur 43ms. Die Weiterverarbeung im Speicher geht dann in Nullkommanix.

            Schreiben kostet noch mehr, da die Festplatte erst den ganzen Cluster lesen muss, um ein einziges Byte darin zu ändern, um ihn dann wieder zurückzuschreiben.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Ich habe zuletzt auch etwas über PHP in Bezug auf Performance gelesen.

              Tom Sommer (Admin und Autor der Smarty-Template Engine)
              schrieb folgendes

              »»I'm going to have to optimize every part of my PHP code, since I just »»read some PHP benchmarks that shows what to do and not to do
              »»
              »»like is_array() is 3x slower than isset()
              »»
              »»and
              »»
              »»$size = sizeof($s);
              »»for($i=0; $i < $size; $i++)
              »»
              »»is 1000% faster than
              »»for($i=0; $i < sizeof($a); $i++)

              Auf welche Benchamrks er da Bezug nimmt weiss ich nicht. Checke einfach mal mit einem Profiler die wichtigsten Stellen (if, foreach, for-Schleifen, fopen, fsockopen, SQL-Queries, evtl includes(?) )

              mfg shexbeer

            2. Hallo Tom,

              Werte waren völlig aus der Luft gegriffen. Sollte nur zur
              verdeutlichung der Problematik helfen.

              Da bin ich ja beruhigt. ALles was im Speicher abläuft, ist bei PHP
              irrsinnig schnell, obwohl es ja eine Intrpreter-Sprache ist. Du
              kannst ja mal bis 1.000.000 zählen lassen und die Zeit stoppen.

              Wie kommst du denn auf den schmalen Trichter? Berechne mal die ersten
              500 Fibonacci-Zahlen. Geht alles im Speicher...

              Jeder Festplattenzugriff (Lesen) kostet z.B. 8,2 ms Wenn Du ein
              File also zeilenweise liest, dann ist das sehr teuer; wenn Du Pech
              hast, pro Zeile 8,2ms (8,2ms x 10.000 = 82s).

              Quatsch. Bitte informiere dich ueber buffered I/O. man fgets(), man
              fread(), man fopen(). Es wird immer mehr gelesen als wirklich
              angefordert wurde. Haeufig (z. B. bei der glibc sowie der diaetlibc)
              wird eine ganze Page gelesen.

              Man, so viel Halbwissen hab ich schon lange nicht mehr gesehen.

              Grüße,
               CK

              --
              Die Wirklichkeit hat weder ein Inneres, noch ein Äußeres, noch ein Zentrum.
              http://wwwtech.de/
              1. Hallo Tom,

                Jeder Festplattenzugriff (Lesen) kostet z.B. 8,2 ms Wenn Du ein
                File also zeilenweise liest, dann ist das sehr teuer; wenn Du Pech
                hast, pro Zeile 8,2ms (8,2ms x 10.000 = 82s).

                Quatsch. Bitte informiere dich ueber buffered I/O. man fgets(), man
                fread(), man fopen(). Es wird immer mehr gelesen als wirklich
                angefordert wurde. Haeufig (z. B. bei der glibc sowie der diaetlibc)
                wird eine ganze Page gelesen.

                Das kannst du uebrigens in den Dateien main/streams.c, Funktion
                php_stdiop_read(), Zeile 1453 (PHP) und libio/fileops.c, Funktion
                mmap_remap_check(), Zeile 616 (Glibc) nachlesen.

                Grüße,
                 CK

                --
                Nur die Weisesten und die Dümmsten können sich nicht ändern.
                http://wwwtech.de/
              2. Hello,

                Man, so viel Halbwissen hab ich schon lange nicht mehr gesehen.

                schön dass Du es genauer weißt. Ich lerne immer gerne was dazu ;-)

                Welche Größe hat denn der Buffer? Ist er 256Byte groß oder 4096Bytes oder 1MByte oder noch mehr?

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hallo Tom,

                  Welche Größe hat denn der Buffer? Ist er 256Byte groß oder 4096Bytes
                  oder 1MByte oder noch mehr?

                  Das ist absolut abhängig vom System und der Implementierung. Übrigens
                  kommt häufig sogar noch ein Buffer im Kernel dazu, so dass noch mehr
                  gepuffert wird.

                  Grüße,
                   CK

                  --
                  Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
                  http://wwwtech.de/
                  1. Hello,

                    Welche Größe hat denn der Buffer? Ist er 256Byte groß oder 4096Bytes
                    oder 1MByte oder noch mehr?

                    Das ist absolut abhängig vom System und der Implementierung. Übrigens
                    kommt häufig sogar noch ein Buffer im Kernel dazu, so dass noch mehr
                    gepuffert wird.

                    Und damit bekommen wir ein nicht nachvollziehbares, kaum noch berechenbares Quantisierungsproblem, dass zudem noch durch die Dutzende von Rahmenbedingungen, die ich oben im Thread nur ansatzweise angedeutet habe, beeinflusst wird.

                    Außerdem ist ja noch zu berücksichtigen, ob autoflush aktiviert ist bei PHP oder irgend einer tieferen Schicht des Systems, auf die PHP selber gar keinen Einfluss hat. Das würde nämlich bei alternierenden Lese-Schreiboperationen zu einer explosionsartig ansteigenden Verarbeitungsdauer führen.

                    Generell ahbe ich für die Praxis herausgefunden, dass bei reinen Leseoperationen das Auslesen am Stück von Blöcken bis ca. 64k (also der klassischen Segmentgröße im PC-Konzept) die Sache gegenüber zeilenweisem Lesen beschleunigt.

                    Wenn Du den Test, den Du für die "loop invariant optimization" durchgeführt hast vielleicht bei Gelegenheit nochmals für den Vergleich von

                    while ($_file[] = fgets());    # Pseudo!

                    und

                    $_file = file();

                    durchführen könntest, dann wäre ich Dir dankbar.

                    Die Datei sollte dabei aus mindestens 1000 Zeilen unterschiedlicher Länge bestehen. Vielleicht nimmt man einfach eine RFC *gg*

                    Liebe Grüße aus http://www.braunschweig.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
              3. Hello,

                Da bin ich ja beruhigt. ALles was im Speicher abläuft, ist bei PHP
                irrsinnig schnell, obwohl es ja eine Intrpreter-Sprache ist. Du
                kannst ja mal bis 1.000.000 zählen lassen und die Zeit stoppen.

                Wie kommst du denn auf den schmalen Trichter? Berechne mal die ersten
                500 Fibonacci-Zahlen. Geht alles im Speicher...

                Hier ging es um den Unterschied zwischen IO-Operationen und Abarbeitung des Scriptes. Ich persönlich würde mit PHP keine wissenschaftlichen Berechnen durchführen, sondern dafür eine Compilersprache verwenden.

                Jeder Festplattenzugriff (Lesen) kostet z.B. 8,2 ms Wenn Du ein
                File also zeilenweise liest, dann ist das sehr teuer; wenn Du Pech
                hast, pro Zeile 8,2ms (8,2ms x 10.000 = 82s).

                Quatsch. Bitte informiere dich ueber buffered I/O. man fgets(), man
                fread(), man fopen(). Es wird immer mehr gelesen als wirklich
                angefordert wurde. Haeufig (z. B. bei der glibc sowie der diaetlibc)
                wird eine ganze Page gelesen.

                Man, so viel Halbwissen hab ich schon lange nicht mehr gesehen.

                Und bei Gelegenheit steige ich natürlich auch in die Frage der Optimierung tiefer ein. Wenn Du das oben Erwähnte mit "Halbwissen" bemängelst, musst Du der Ordnung halber auch sagen, dass Deine Darstellung sehr isoliert ist. Ich würde mal annehmen, dass ich bisher von den Optimierungsmöglichkeiten maximal 10% selbst ausprobiert habe, also ist "Halbwissen" dann noch ein Kompliment *g* Danke...

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
          2. Wer kommt denn auf die Idee, dass ein Count 0,1 Sec dauern könnte? Wenn die Werte im Speicher stehen, dauert das nicht 1/1000 so lange.

            Hallo! Die Problematik ist mir ja klar, wie ich schon geschrieben habe. Aber ich wollte wirklich auf diesen speziellen Fall hinaus.
            Dass das jeden Durchlauf neu "errechnet" werden muss ist mir klar, aber das heisst ja nicht, dass es in diesem konkreten Fall langsam wird - wenn count selbst zB den Wert direkt aus dem Speicher lesen würde.

    2. Hallo Thiemo,

      Ist es schlecht zu schreiben for($i = 0; $i < count($array); $i++)?

      Das ist eine der wenigen Stellen, an denen man PHP-Code massiv (!)
      beschleunigen kann. Die Zählung mit count() dauert wahnsinnig lange.

      Quatsch. Wenn man nicht gerade count() mit COUNT_RECURSIVE startet,
      dann ist der Aufwand für count() faktisch 0. Nachzulesen in
      ext/standard/array.c, Funktionen php_count_recursive() (Zeile 246)
      und count() (Zeile 269). Wird COUNT_RECURSIVE weggelassen, dann wird
      schlicht die Nummer der Elemente, die in einer Variablen gespeichert
      ist, zurückgegeben (Nachzulesen in Zend/zend_hash.c, Funktion
      zend_hash_num_elements(), Zeile 994).

      Grüße,
       CK

      --
      Nichts zu begehren, das ist der Weg.
      http://wwwtech.de/
      1. Hello,

        Ist es schlecht zu schreiben for($i = 0; $i < count($array); $i++)?

        Das ist eine der wenigen Stellen, an denen man PHP-Code massiv (!)
        beschleunigen kann. Die Zählung mit count() dauert wahnsinnig lange.

        Quatsch.

        @Christian: Lieber CK, könntest Du angesichts der Höflichkeitesdiskussionen in unserm[*] Forum bitte dieses Wort am Anfang Deiner Erwiderung in Zukunft einfach weglassen? Du könntest doch auch mal ein paar Worte mehr schreiben: "Der Belesene weiß mehr:"

        [...] ist der Aufwand für count() faktisch 0. [...] wird
        schlicht die Nummer der Elemente, die in einer Variablen gespeichert
        ist, zurückgegeben [...]

        Es lässt sich aber ggf. trotzdem Zeit einsparen, wenn nämlich count($array) für die Laufzeit der Schleife gleich bleibt. Dann ist es günstiger:

        $anz = count($array);
        for($i = 0; $i < $anz; $i++)
        {
          ...
        }

        zu schreiben, da der Funktionsaufruf als solcher schon erheblich (Prozentual) mehr Zeit kostet, als das Auslesen der invarianten Variable $anz.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo Tom,

          [...] da der Funktionsaufruf als solcher schon erheblich
          (Prozentual) mehr Zeit kostet, als das Auslesen der invarianten
          Variable $anz.

          Da ast du recht. Und dabei muss man sagen, der Unterschied ist sogar
          sehr gross:

          ckruse@sunshine:~/tmp $ cat test.php
          <?php

          $ary = Array();

          for($i=0;$i<10000;$i++) $ary[$i] = $i;

          $tm1 = microtime();

          for($i=0;$i<count($ary);$i++) ;

          $tm2 = microtime();

          echo "time needed for count(): ".($tm2-$tm1)."\n";

          $tm1 = microtime();

          $count = count($ary);
          for($i=0;$i<$count;$i++) ;

          $tm2 = microtime();

          echo "time needed for cache method: ".($tm2-$tm1)."\n";

          ?>
          ckruse@sunshine:~/tmp $ php test.php
          time needed for count(): 0.017596
          time needed for cache method: 0.005824
          ckruse@sunshine:~/tmp $

          Grüße,
           CK

          --
          Es gibt keinen Ort, wo der Geist zu finden waere. Er ist wie die Fussspuren der Voegel am Himmel.
          http://wwwtech.de/
          1. Hello,

            Danke für den Test:

            Da ast du recht. Und dabei muss man sagen, der Unterschied ist sogar
            sehr gross:

            echo "time needed for count(): ".($tm2-$tm1)."\n";

            $count = count($ary);
            for($i=0;$i<$count;$i++) ;

            time needed for count(): 0.017596
            time needed for cache method: 0.005824

            Faktor 3 oder besser gesagt 0.33 möglich. Das sollte man sich wirklich merken! Und wenn nun gemischte IO-Operationen dazu kommen, dann wird es wirklich spannend (fread(), fwrite(), echo, print, ...)

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
  2. Hello,

    man kann eigentlich nur schauen, ob Du nicht ein paar Standardfehle gemacht hast:

    Lost Handles
      Lost Resultsets
      Schreibzugriffe in Flatfiles zilenweise, statt Blockweise
      Lesezugriffe in Flatfiles zeielnseise statt blockwseise

    Alle Punkte beziehen sich auf Schleifen.
    Je mehr Schleifen Du gegen fertige PHP-Funktionen ersetzen kannst, desto schnmeller wird das Script.

    Gibt es denn irgendwann einen Timeout?
    Hast Du schon Fehlermeldungen wegen Speichermangel erhalten?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo,

      Danke für eure Vorschläge, aber ich kann wie gesagt nichts resourcenverschwenderisches in meinem Code entdecken.

      Jedenfalls habe ich jetzt das ganze "eingegrenzt" und NOCH VIEL mehr ratlos. Wie "schnell" phpbb ist, sollte ja jeder wissen.
      Jedenfalls OBWOHL es wie gesagt alles komplett laden muss und so ist es  nicht langsam. Ich habe die Seite 10 Mal hintereinander aufgerufen und das Ergebnis ist eindeutig:
      204
      196
      194
      194
      200
      204
      197
      197
      219
      196

      Eine *leere* andere Seite hingegen (komplett gleich, nur eben leer):
      394
      409
      392
      387
      388
      396
      393
      402
      405
      386

      Noch verwirrender wird diese Testseite:

      <?
      list($usec, $sec) = split(' ', microtime());
      $d_start = ((float)$usec + (float)$sec);

      define('IN_PHPBB', true);
      $phpbb_root_path = dirname(__FILE__) . '/../forum/';
      include_once(dirname(__FILE__) . '/../forum/extension.inc');
      include_once(dirname(__FILE__) . '/../forum/common.php');

      list($usec, $sec) = split(' ', microtime());
      $d_end = ((float)$usec + (float)$sec);
      echo "<p align="center">Erstellt in ".(round($d_end-$d_start, 3))." Sekunden. ";
      echo "Davon ".(round($db->duration, 3))." Sekunden SQL Abfragen von insgesamt ".($db->num_queries)." SQL Abfragen</p>\n";
      ?>

      Sonst steht da wirklich nix drinnen!
      Und sofort bin ich auf ca 0,3 Sekunden - obwohl NICHTS drinen steht - ausser dass er die php includes einbindet...phpbb bindet die ja auch ein und noch VIEEEL mehr und ist viel schneller.

      CPU Last generell auf dem Server ist immer gleich das kann es nicht sein.

      Jetzt bin ich ums 10fache mehr ratlos....

      Noch immer wer eine Idee?

      1. Hello,

        $phpbb_root_path = dirname(__FILE__) . '/../forum/';
        include_once(dirname(__FILE__) . '/../forum/extension.inc');
        include_once(dirname(__FILE__) . '/../forum/common.php');

        Das sieht doch gefährlich nach DB-Connetction aus.
        Werden in den includes auch Abfragen durchgeführt?

        Wie wird der Host der DB denn adressiert? Liegt der auf localhost oder separat?

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo,

          $phpbb_root_path = dirname(__FILE__) . '/../forum/';
          include_once(dirname(__FILE__) . '/../forum/extension.inc');
          include_once(dirname(__FILE__) . '/../forum/common.php');

          Das sieht doch gefährlich nach DB-Connetction aus.
          Werden in den includes auch Abfragen durchgeführt?

          Ja sicher, genug. Ich weiss nicht, ob du phpbb kennst. Das sind eh' die Standardincludes vom Forum.
          Obwohl ichs mir fast nicht vorstellen kann dass es die DB ist (die wird ja auch mitgezählt).

          Wie wird der Host der DB denn adressiert? Liegt der auf localhost oder separat?

          Ja, localhost, per Unix Domain Socket

    2. Hallo Tom,

      Schreibzugriffe in Flatfiles zilenweise, statt Blockweise
        Lesezugriffe in Flatfiles zeielnseise statt blockwseise

      Es besteht kein Unterschied zwischen zeilenweisem und blockweisem
      Zugriff.

      Übrigens sind I/O-Zugriffe in PHP gepuffert, so dass bei 10
      fgets()-Aufrufen unter Umständen nur ein read()-Call stattfindet.

      Grüße,
       CK

      --
      Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!
      http://wwwtech.de/
  3. Hello,

    Standardfrage, die mir noch einfallen zum Thema:

    welches Betriebssystem liegt unter dem Webserver?
    welches Filesystem wird benutzt?
    auf welcher Hardware (Storage System) läuft das Filessytem? (RAID?)
    wieviel Hauptspeicher dem dem System zur Verfügung?
    welcher Webserver ist im Einsatz?
    welche Datenbank ist im Einsatz?
    Welches Tabellenformat nutzt Deine Datenbank?
    Wird die GDLib verwendet?
    welche Parametrisierung hast Du für den Webserver vorgenommen?

    Bei Linux/Unix:
    Werden die Files und Tabellen direkt adressiert oder über symbolische Links?

    Wieviele Prozesse laufen gleichzeitig?
     -> Größe der Site
     -> Anzahl der HTTP-Requests pro Site (z.B. Picture-Grids)
     -> Anzahl der User

    Welche Prozesse laufen noch auf dem Server?
     -> ...

    ...

    [mehr, wenn es dich wirklich interessiert]
    Wenn wir schon ins Eingemachte http://forum.de.selfhtml.org/?t=82413&m=480901 gehen, dann müssen wir vorher diese Fragen klären.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau