[PHP / MySQL] Simulation hoher Zugriffe

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

  • [PHP / MySQL] Simulation hoher Zugriffe

    hi,
    ist es irgendwie möglich, tausende von Anfragen pro Minute zu simulieren?
    Oder muss ich wirklich mit nem Freund 6 Linux rechner hinstellen, die dann ununterbrochen ne Datei aufrufen und so dann die hohe Zugriffszahl ermöglichen?

    am liebsten wäre es mir natürlich, wenn man die Zugriffe steuern könnte, da würde ich nämlich gerne 200.000 Zugriffe auf 2 Stunden verteilen und 100.000 auf die restliche Zeit.

    Geht das irgendwie?
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

  • #2
    du kannst z.B. eine Query im PMA absetzen und schauen, wie lange sie braucht, dann kannst du mit While und time() die Simulation kreieren.

    Kommentar


    • #3
      *ahm* was is nochmal PMA
      Sunshine CMS
      BannerAdManagement
      Borlabs - because we make IT easier
      Formulargenerator [color=red]Neu![/color]
      Herkunftsstatistik [color=red]Neu![/color]

      Kommentar


      • #4
        phpMyAdmin
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Original geschrieben von Abraxax
          phpMyAdmin
          ey ihr seid fies...hättest ja mal pMA schreibe könne, dann hätt ichs gewusst

          hmm, okay, aber ich muss ja noch vorher ne IP erzeugen, weil es ja immer wieder ne andere sein soll.

          mach ich dann mit php oder? kann ja ne schwachsinns zahl für den test sein.

          naja, jedenfalls danke
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            ich hier ein script zum performance-test:


            WICHTIG: Diese Applikation erzeugt u. U. sehr HOHE SERVERLASTEN! Deshalb darf sie unter gar keinen Umständen auf öffentlichen Servern getestet werden. Im ungünstigsten Fall droht ein SERVERCRASH!


            PHP-Code:
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

            <html>
            <head>
                <title>MySQL-Performance-Test</title>
                <style type="text/css">
                    body{
                        font-family : Verdana, Helvetica;
                        font-size : 12px;
                        font-style : normal;
                        font-variant : normal;
                        font-weight : normal;
                        color : #330099;
                    }
                    td{
                        font-family : Verdana, Helvetica;
                        font-size : 10px;
                        font-style : normal;
                        font-variant : normal;
                        font-weight : normal;
                        color : #330099;
                    }
                    .textfield{
                        border:1, solid;
                        border-color:#330099;
                        background-color:#CFDCED;
                        font-family:Verdana, Helvetica;
                        font-size:12px;
                        text-decoration:none;
                        color:#330099;
                    }
                    .button{
                        border:1, solid;
                        border-color:#330099;
                        background-color:#CFDCED;
                        font-family:Verdana, Helvetica;
                        font-size:12px;
                        text-decoration:none;
                        color:#35537E;
                    }
                    hr{
                        border : 1 solid #330099;
                    }
                </style>
            </head>

            <body>
            <font color="#ff0000" size="2"><b>ACHTUNG!!! Diese Applikation erzeugt u. U. sehr HOHE SERVERLASTEN! Deshalb darf sie 
            unter gar keinen Umständen auf öffentlichen Servern getestet werden. Im ungünstigsten Fall droht ein SERVERCRASH!<br>
            Keine Haftung für entstandene Schäden!!!
            </b></font><br><br><hr>
            <?php
                
            if(@$action=="test"){
                    if(
            $anzahl<1){
                        echo 
            "<meta http-equiv=\"refresh\" content=\"0;URL=mysql_test.php\">";
                    }
                    if(
            $durchgange<1){
                        
            $durchgange=1;
                    }
                    
            $dauer=array();
                    
            $gesamt1=0;
                    
            $gesamt2=0;
                    
            $gesamt3=0;
                    
            $gesamt4=0;
                    
            $gesamt5=0;
                    
            $gesamt6=0;
                    
            $gesamt7=0;
                    include(
            "mysql_config.php");
                    
            mysql_connect($mysql_host$mysql_user$mysql_pass);
                    
            mysql_select_db($mysql_database);
                    @
            mysql_query("DROP TABLE `mysqltest` ");
                    for(
            $j=0;$j<$durchgange;$j++){
            //Zufallswerte erzeugen
                        
            $startzeit=microtime();
                        
            $startzeit_mikrosekunden=substr($startzeit,0,10);
                        
            $startzeit_sekunden=substr($startzeit,11,10);
                        
            $startzeit=$startzeit_sekunden+$startzeit_mikrosekunden;
                        
            $zufall=array();
                        
            mt_srand((double)microtime()*1000000);
                        for(
            $i=0;$i<$anzahl;$i++){
                            
            $zufall[$i]=md5(mt_rand());
                        }
                        
            $endzeit=microtime();
                        
            $endzeit_mikrosekunden=substr($endzeit,0,10);
                        
            $endzeit_sekunden=substr($endzeit,11,10);
                        
            $endzeit=$endzeit_sekunden+$endzeit_mikrosekunden;
                        
            $dauer1[$j]=$endzeit-$startzeit;
            //Testtabelle erzeugen
                        
            $startzeit=microtime();
                        
            $startzeit_mikrosekunden=substr($startzeit,0,10);
                        
            $startzeit_sekunden=substr($startzeit,11,10);
                        
            $startzeit=$startzeit_sekunden+$startzeit_mikrosekunden;
                        
            mysql_query("CREATE TABLE `mysqltest` (`ID` INT not null AUTO_INCREMENT, `TEST` TEXT not null , PRIMARY KEY (`ID`), INDEX (`ID`)) ");
                        
            $endzeit=microtime();
                        
            $endzeit_mikrosekunden=substr($endzeit,0,10);
                        
            $endzeit_sekunden=substr($endzeit,11,10);
                        
            $endzeit=$endzeit_sekunden+$endzeit_mikrosekunden;
                        
            $dauer2[$j]=$endzeit-$startzeit;
            //Datensätze einfügen
                        
            $startzeit=microtime();
                        
            $startzeit_mikrosekunden=substr($startzeit,0,10);
                        
            $startzeit_sekunden=substr($startzeit,11,10);
                        
            $startzeit=$startzeit_sekunden+$startzeit_mikrosekunden;
                        for(
            $i=0;$i<$anzahl;$i++){
                            
            mysql_query("insert into mysqltest(TEST)values('$zufall[$i]')");
                        }
                        
            $endzeit=microtime();
                        
            $endzeit_mikrosekunden=substr($endzeit,0,10);
                        
            $endzeit_sekunden=substr($endzeit,11,10);
                        
            $endzeit=$endzeit_sekunden+$endzeit_mikrosekunden;
                        
            $dauer3[$j]=$endzeit-$startzeit;
            //Datensätze lesen
                        
            $startzeit=microtime();
                        
            $startzeit_mikrosekunden=substr($startzeit,0,10);
                        
            $startzeit_sekunden=substr($startzeit,11,10);
                        
            $startzeit=$startzeit_sekunden+$startzeit_mikrosekunden;
                        
            $query_read=mysql_query("select * from mysqltest");
                        while(
            $arr_read=mysql_fetch_array($query_read)){
                        
            //do nothing/nüscht
                        
            }
                        
            $endzeit=microtime();
                        
            $endzeit_mikrosekunden=substr($endzeit,0,10);
                        
            $endzeit_sekunden=substr($endzeit,11,10);
                        
            $endzeit=$endzeit_sekunden+$endzeit_mikrosekunden;
                        
            $dauer4[$j]=$endzeit-$startzeit;
            //Datensätze löschen
                        
            $startzeit=microtime();
                        
            $startzeit_mikrosekunden=substr($startzeit,0,10);
                        
            $startzeit_sekunden=substr($startzeit,11,10);
                        
            $startzeit=$startzeit_sekunden+$startzeit_mikrosekunden;
                        for(
            $i=0;$i<$anzahl;$i++){
                            
            mysql_query("delete from mysqltest where ID=".$i."");
                        }
                        
            $endzeit=microtime();
                        
            $endzeit_mikrosekunden=substr($endzeit,0,10);
                        
            $endzeit_sekunden=substr($endzeit,11,10);
                        
            $endzeit=$endzeit_sekunden+$endzeit_mikrosekunden;
                        
            $dauer5[$j]=$endzeit-$startzeit;
            //Tabelle löschen
                        
            $startzeit=microtime();
                        
            $startzeit_mikrosekunden=substr($startzeit,0,10);
                        
            $startzeit_sekunden=substr($startzeit,11,10);
                        
            $startzeit=$startzeit_sekunden+$startzeit_mikrosekunden;
                        
            mysql_query("DROP TABLE `mysqltest` ");
                        
            $endzeit=microtime();
                        
            $endzeit_mikrosekunden=substr($endzeit,0,10);
                        
            $endzeit_sekunden=substr($endzeit,11,10);
                        
            $endzeit=$endzeit_sekunden+$endzeit_mikrosekunden;
                        
            $dauer6[$j]=$endzeit-$startzeit;
                    }

                    echo 
            "<b><u>Auswertung</u></b><br><br>";
                    echo 
            "<table cellpadding=\"0\" cellspacing=\"1\" border=\"0\" width=\"980\">";
                    echo 
            "<tr>";
                    echo 
            "<td colspan=\"7\">Anzahl Datensätze: ".$anzahl."<br>Anzahl Durchgänge:&nbsp;".$durchgange."</td>";
                    echo 
            "</tr>";
                    echo 
            "<tr><td colspan=\"7\">&nbsp;</td></tr>";
                    echo 
            "<tr>";
                    echo 
            "<td width=\"140\"><u>Datensätze erzeugt[s]</u></td>";
                    echo 
            "<td width=\"140\"><u>Test-Tabelle erzeugt[s]</u></td>";
                    echo 
            "<td width=\"140\"><u>Tabelle befüllt[s]</u></td>";
                    echo 
            "<td width=\"140\"><u>Datensätze gelesen[s]</u></td>";
                    echo 
            "<td width=\"140\"><u>Datensätze gelöscht[s]</u></td>";
                    echo 
            "<td width=\"140\"><u>Tabelle gelöscht[s]</u></td>";
                    echo 
            "<td width=\"140\"><u>Gesamtzeit[s]</u></td>";
                    echo 
            "</tr>";
                    echo 
            "<tr><td colspan=\"7\">&nbsp;</td></tr>";
                    for(
            $i=0;$i<$durchgange;$i++){
                        echo 
            "<tr>";
                        
            $dauer7[$i]=$dauer1[$i]+$dauer2[$i]+$dauer3[$i]+$dauer4[$i]+$dauer5[$i]+$dauer6[$i];
                        echo 
            "<td>".$dauer1[$i]."</td>";$gesamt1+=$dauer1[$i];
                        echo 
            "<td>".$dauer2[$i]."</td>";$gesamt2+=$dauer2[$i];
                        echo 
            "<td>".$dauer3[$i]."</td>";$gesamt3+=$dauer3[$i];
                        echo 
            "<td>".$dauer4[$i]."</td>";$gesamt4+=$dauer4[$i];
                        echo 
            "<td>".$dauer5[$i]."</td>";$gesamt5+=$dauer5[$i];
                        echo 
            "<td>".$dauer6[$i]."</td>";$gesamt6+=$dauer6[$i];
                        echo 
            "<td>".$dauer7[$i]."</td>";$gesamt7+=$dauer7[$i];
                        echo 
            "</tr>";
                    }
                    echo 
            "<tr><td colspan=\"7\">&nbsp;</td></tr>";
                    
            $durchschnitt1=$gesamt1/$durchgange;
                    
            $durchschnitt2=$gesamt2/$durchgange;
                    
            $durchschnitt3=$gesamt3/$durchgange;
                    
            $durchschnitt4=$gesamt4/$durchgange;
                    
            $durchschnitt5=$gesamt5/$durchgange;
                    
            $durchschnitt6=$gesamt6/$durchgange;
                    
            $durchschnitt7=$gesamt7/$durchgange;
                    echo 
            "<tr>";
                    echo 
            "<td>&Oslash;".$durchschnitt1."</td>";
                    echo 
            "<td>&Oslash;".$durchschnitt2."</td>";
                    echo 
            "<td>&Oslash;".$durchschnitt3."</td>";
                    echo 
            "<td>&Oslash;".$durchschnitt4."</td>";
                    echo 
            "<td>&Oslash;".$durchschnitt5."</td>";
                    echo 
            "<td>&Oslash;".$durchschnitt6."</td>";
                    echo 
            "<td>&Oslash;".$durchschnitt7."</td>";
                    echo 
            "</tr>";
                    echo 
            "</table>";
                    
            mysql_close();
                }else{
                    echo 
            "<b>Diese Applikation misst die Performance einer MySQL-Datenbank, indem eine Test-Tabelle mit Zufallswerten gefüllt, gelesen und gelöscht wird.</b><br>";
                    echo 
            "Unter Umständen stossen Sie an die Grenze der Ausführungszeit für Skripte (max_execution_time). <br>";
                    echo 
            "<form action=\"mysqltest.php\" method=\"post\">";
                    echo 
            "<input type=\"hidden\" name=\"action\" value=\"test\">";
                    echo 
            "Geben Sie bitte die Anzahl an Datensätzen ein, mit der die Test-Tabelle befüllt werden soll.<br>";
                    echo 
            "Anzahl:&nbsp;&nbsp;<input type=\"text\" name=\"anzahl\" class=\"textfield\" size=\"10\"><br><br>";
                    echo 
            "Geben Sie die Anzahl an Durchgängen ein.<br>";
                    echo 
            "Durchgänge&nbsp;<input type=\"text\" name=\"durchgange\" class=\"textfield\" size=\"10\"><br><br>";
                    echo 
            "<input type=\"submit\" value=\"starten\" class=\"button\">";
                    echo 
            "</form>";
                }
            ?>
            </body>
            </html>
            PHP-Code:
            <?php
            $mysql_host
            ="192.168.0.7";//MySQL-Datenbank-Host
            $mysql_user="rooty";//MySQL-Datenbank-Login, Benutzername
            $mysql_pass="**";//MySQL-Datenbank-Pass, Passwort
            $mysql_database="mysqltest";//MySQL-Datenbankname
            ?>
            vielleicht hift es weiter ...
            Zuletzt geändert von hansi; 16.06.2004, 10:33.

            Kommentar


            • #7
              Original geschrieben von hansi
              ich hier ein script zum performance-test:

              Deshalb darf sie unter gar keinen Umständen auf öffentlichen Servern getestet werden. Im ungünstigsten Fall droht ein SERVERCRASH!
              ich werde das gleich mal auf meinem 1und1 server hochladen und testen

              danke hansi
              Sunshine CMS
              BannerAdManagement
              Borlabs - because we make IT easier
              Formulargenerator [color=red]Neu![/color]
              Herkunftsstatistik [color=red]Neu![/color]

              Kommentar


              • #8
                Das Problem ist nur das Du dieses Script eigentlich zumindest mehrfach starten müsstest, da auf diesem Wege keine Concurrent Queries getestet werden und Prinzipiell diese das Problem sind ... !
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  also doch 6 linux rechner und dann da zig cronjobs laufen lassen die pro sec sich aufrufen?
                  Sunshine CMS
                  BannerAdManagement
                  Borlabs - because we make IT easier
                  Formulargenerator [color=red]Neu![/color]
                  Herkunftsstatistik [color=red]Neu![/color]

                  Kommentar

                  Lädt...
                  X