Windows Tool um Perfomance einer Seite zu messen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Windows Tool um Perfomance einer Seite zu messen

    Hallo,

    ich bin gerade dabei zwei Varianten eines Skriptes zu vergleich. Da ich dabei in der einen Lösung htaccess Funktionalitäten nutze und sie in der anderen Variante nur mit PHP löse, fällt ein einfacher Timestamp mit microtime schonmal aus.

    Auch mit wget komme ich nicht ans Ziel, denn der Server, auf dem PHP arbeitet, kann die URL nicht auflösen (wohl kein DNS Anschluss).

    Ich suche nun ein kleines Tool, das eigentlich nichts anderes macht als mir eine bestimmt URL mehrmals aufzurufen und mir dann mitteilt, wie lange es gedauert hat bis die Seite da war. Ich weiss sehr wohl, dass die Werte kein Garant sind, da noch andere Faktoren als die beiden Skriptvarianten eine Rolle spielen, jedoch möchte ich zumindest ausschliessen, das es zu massiven Verschlechterungen in der PHP Variante kommt (die, im Falle einer massiven Verschlechterung, keine Option mehr wäre).

    Gruss,
    Lenny

  • #2
    Dann verschieb ich das mal zu den Skriptgesuchen.

    BTW: Kannst du nicht lokal ein kleines PHP-Skript schreiben, welches das mit cURL erledigt?
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Ohne das jetzt getestet zu haben (werde ich gleich nachholen):

      Dürfte da nicht auch die fehlende DNS-Verbindung das Problem sein?

      EDIT:
      Mea Culpa... lokal... da werde ich mal XAMPP anwerfen, da ich idR direkt in der Testumgebung arbeite habe ich nicht daran gedacht!
      Zuletzt geändert von Lennynero; 29.01.2010, 10:49.

      Kommentar


      • #4
        Zitat von Lennynero Beitrag anzeigen
        Dürfte da nicht auch die fehlende DNS-Verbindung das Problem sein?
        Das verstehe ich grad nicht. Wieso hast du kein DNS auf deinem Computer? Wie kommst du dann überhaupt auf Webseiten (z. B. diese hier) drauf?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Zitat von AmicaNoctis Beitrag anzeigen
          Das verstehe ich grad nicht. Wieso hast du kein DNS auf deinem Computer? Wie kommst du dann überhaupt auf Webseiten (z. B. diese hier) drauf?
          Wie im Edit erwähnt: ich war mit dem Kopf auf dem Entwicklungsserver und habe das lokal erst gar nicht beachtet.

          Hier das Skript mit dem ich jetzt eine rudimentäre Überprüfung gemacht habe. Es gewinnt sicherlich keinen Schönheitspreis und die Ergebnisse sind sicherlich nicht supergenau, aber zumindest eine Annäherung, bzw. wird zumindest eine Tendenz gezeigt (im meinem Falle den, das es keine signifanten zeitlichen Unterschied zwischen den beiden Varianten gibt).

          Um die Webseite zu lesen habe ich file() genommen (alternativ ging auch fopen()), das Ganze in eine Schleife gesetzt und um den Timeout zu umgehen lasse ich die Seite sich selbst laden (Übergabe der Werte von Seite zu Seite hätte man auch mit einer Session machen können, allerdings hätte man da den Zähler zurücksetzen müssen (Sessioncookie löschen oder ein kleines Skript zum Löschen schreiben), falls das Skript mal nicht bis zum Ende gelaufen wäre (Timeouts und Umleitungsmaximum sind mir beim Testen mehrmals untergekommen ).

          PHP-Code:
              if(!isset($_GET['counter']))
              {
                  
          $int_counter 1;
              }
              else
              {
                  
          $int_counter = (int) $_GET['counter'];
              }

              if(isset(
          $_GET['times']))
              {
                  
          $arr_time explode(","$_GET['times']);
              }
              
          /**
              * Wie oft laden wir die Seiten (20 scheint die Maximale Anzahl
              * an Weiterleitungen zu sein, mehr macht mein Apache nicht)
              */
              
          $int_tries 20;

              
          //Wie oft versuchen wir pro Seitenaufruf die Seiten zu laden
              
          $int_loops 5;

              
          //Welche Seiten sollen aufgerufen werden?
              
          $arr_pages = array(
                                  
          'http://www.google.de',
                                  
          'http://www.spiegel.de',  
                                  );


              
          $arr_times = array();

              
          //Hier geht die Messung los
              
          $time_start microtime(true);

              for(
          $j 1$j <= $int_loops$j++)
              {
                  foreach(
          $arr_pages as $url)
                  {
                      
          $handle file ($url);
                      
          //Alternativ:
                      #$handle = fopen ($url, "r");
                  
          }
              }

              
          $arr_time[] = microtime(true) - $time_start;
              
          //Hier endet die Messung

              
          if($int_counter == $int_tries)
              {
                  
          $i 0;
                  
          //Ausgabe der Einzelmessungen und des Gesamtergebnisses
                  
          foreach($arr_time as $time)
                  {
                      
          $i++;
                      echo 
          $i " " $time "<br/>";
                      
          $sum_time += $time;
                  }
                  echo 
          "<br/>Schnitt: " $sum_time $i;
              }
              else
              {
                  
          $int_counter++;
                  
          /**
                  * Um die Maximum execution Time etwas zu umegehen, laden wir die
                  * Seite einfach neu und übergeben die bisherigen Messwerte
                  */
                  
          header('Location: ?counter=' $int_counter "&times="implode(","$arr_time));
              } 

          Kommentar


          • #6
            Kleiner Tipp: wenn du ein PHP-Skript auf der Konsole laufen lässt (für sowas wäre das ja ausreichend), gibt es kein Timeout mehr.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Vergiss nicht, dass das reine Dokument noch gar nichts über die "Performance" aussagt. Jedwede eingebundene Ressource (Script, Stylesheets, Grafiken, Flash, Videos, etc) wird in dieser Berechnung nicht berücksichtig, sind aber nicht selten der Flaschenhals, den du ja aufdecken willst.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Zitat von AmicaNoctis Beitrag anzeigen
                Kleiner Tipp: wenn du ein PHP-Skript auf der Konsole laufen lässt (für sowas wäre das ja ausreichend), gibt es kein Timeout mehr.
                Funktionieren da dann auch die Redirects?

                Zitat von unset Beitrag anzeigen
                Vergiss nicht, dass das reine Dokument noch gar nichts über die "Performance" aussagt. Jedwede eingebundene Ressource (Script, Stylesheets, Grafiken, Flash, Videos, etc) wird in dieser Berechnung nicht berücksichtig, sind aber nicht selten der Flaschenhals, den du ja aufdecken willst.
                Wie schon angesprochen: supergenau ist es nicht, im aktuellen Fall vergleiche ich RewriteRule in der htaccess mit einem header Location in einem PHP Skript, und da beide Aktionen aufgerufen werden bevor irgendetwas anderes passiert, wäre selbst die Apachemeldung das ein Dokument verschoben worden ist mir schon aussagekräftig genug.

                Will man detaillierteres Wissen, sind file und fopen sicherlich nicht die geeigneten Mittel.

                In einer anderen Variante hatte ich mir die Zeit anzeigen lassen, bis eine einzelne URL aufgerufen wurde, und die Daten die ich dort zurück bekommen hatte, enstprachen den Aufrufzeiten in einem normalen Browser (natürlich nicht 100%, aber es waren halt 0,925 statt 0,823 etc., und wenn man das wiederholte konnte es auch durchaus umgekehrt sein). Erst mit steigender Zahl an Messungen dürfte sich ein richtiger Trend offenbaren.

                Kommentar


                • #9
                  Zitat von Lennynero Beitrag anzeigen
                  Funktionieren da dann auch die Redirects?
                  Nein, aber die brauchst du ja dann nicht mehr, weil das Skript sich nicht mehr selbst aufrufen muss, um "durchzuhalten".
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Und was hat dass dann alles damit zu tun, wie schnell eine Seite ausgeliefert ist?
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Gar nichts, es ging grad um sein Skript, welches das messen soll.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Zitat von AmicaNoctis Beitrag anzeigen
                        Nein, aber die brauchst du ja dann nicht mehr, weil das Skript sich nicht mehr selbst aufrufen muss, um "durchzuhalten".
                        :mir fehlt ein Smiley, der sich gerade mit der flachen Hand auf die Stirn schlägt:

                        Danke

                        Kommentar


                        • #13
                          Zitat von AmicaNoctis Beitrag anzeigen
                          Gar nichts, es ging grad um sein Skript, welches das messen soll.
                          Ich bezog mich schon auf die mir gegebene Antwort, da kam halt nur was zwischen. Beantwortet ist meine Frage jetzt trotzdem nicht.
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • #14
                            OffTopic:
                            Auch immer gern genommen:
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              Zitat von unset Beitrag anzeigen
                              Ich bezog mich schon auf die mir gegebene Antwort, da kam halt nur was zwischen. Beantwortet ist meine Frage jetzt trotzdem nicht.
                              Zitat von unset Beitrag anzeigen
                              Und was hat dass dann alles damit zu tun, wie schnell eine Seite ausgeliefert ist?
                              Kannst du bitte konkreter werden?

                              Ich habe Eingangs erläutert, das ich zwei Varianten vergleichen möchte und das ich dazu ein geeignetes Tool suche. Aufgrund den Tipps von AmicaNoctis habe ich mir dieses kleine Skript zusammengebastelt, was mir immerhin Zahlen liefert, die mir durchaus Sinnvoll erscheinen (wenn ich, wie auch schon erwähnt, sehe das mir mein Skript meldet eine Seite wurde innerhalb von knappen 0,9 Sekunden geladen und mein Browser mir beim Aufruf der gleichen Seite einen ähnlcihen Wert zurückgibt und zwar in mehreren Fällen, dann kann ich annehmen, dass das Skript entweder das misst was ich denke, dass das Skript Mist misst und es nur absoluter Zufall ist das die Werte ähnlich sind oder dass das Skript vielleicht etwas ganz anderes misst (was wieder zufällig ähnlich der anderen Werte ist)).

                              Ich habe das Skript einige Male mit meinen "Fällen" getestet und habe in der einen Variante einen Durchschnittswert von 39,4242115 Sekunden gegenüber 39,4295916 in der anderen Variante erhalten. Interessanterweise haben die Werte der ersten Variante weiter gestreut, aber auch nicht so, das ich mir da einen großen Kopf machen sollte.

                              Getestet habe ich allerdings nicht gleichzeitig, sondern abwechseln, und ja, es ist mir bewusst das auch das eine Fehlerquelle für Unterschiedliche Zeiten sein kann, aber deshalb habe ich das Skript ja auch mehrmals (abwechseln mit den beiden Varianten) laufen lassen. Nur um das auf den Punkt zu bringen: mit den beiden Varianten meinte ich die Skripte, die hinter den Seiten liegen die ich aufgerufen habe und das sind nicht die jetzt im Skript stehenden URLs.

                              So, und jetzt kommst du.

                              Woraus liest du, das ich einen Flaschenhals suche? Aus welchem meiner Beiträge ist sowas zu erlesen?

                              Zitat von AmicaNoctis Beitrag anzeigen
                              OffTopic:
                              Auch immer gern genommen:
                              Ja, der trifft es doch ziemlich gut

                              Kommentar

                              Lädt...
                              X