Zarejestruj się na BitBay.net
Home > apache, PHP > Jak sprawdzić prędkość serwera www pod hosting?

Jak sprawdzić prędkość serwera www pod hosting?

benchmarkSzukając wydajnego serwera WWW zastanawiałem się jakie parametry wziąć pod uwagę i jak ocenić jego wydajność? Jak zmierzyć szybkość?  Można by przeprowadzić naprawdę dużo różnych testów, jednakże do większości celów wystarczy sprawdzić kilka podstawowych rzeczy wpływających na szybkość ładowania strony www:  pingi, trasę routingu, szybkość PHP, szybkość MySQL:

 

  1. PING:  Szybkość odpowiedzi serwera:
    C:\Users\tidnab>ping wp.pl -n 10
    
    Badanie wp.pl [212.77.100.101] z 32 bajtami danych:
    Odpowiedź z 212.77.100.101: bajtów=32 czas=26ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=26ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=26ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=26ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=26ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=23ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=24ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=28ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=24ms TTL=240
    Odpowiedź z 212.77.100.101: bajtów=32 czas=28ms TTL=240
    
    Statystyka badania ping dla 212.77.100.101:
    Pakiety: Wysłane = 10, Odebrane = 10, Utracone = 0
    (0% straty),
    Szacunkowy czas błądzenia pakietów w millisekundach:
    Minimum = 23 ms, Maksimum = 28 ms, Czas średni = 25 ms
    

     

  2. TRACERT: Patrzymy przez ile serwerów lecą pakiety z naszego łącza:
    C:\Users\tidnab>tracert -d wp.pl
    
    Śledzenie trasy do wp.pl [212.77.100.101]
    z maksymalną liczbą 30 przeskoków:
    
    1     1 ms     1 ms     1 ms  192.168.100.252
    2     *        *        *     Upłynął limit czasu żądania.
    3    10 ms    25 ms     9 ms  89.75.10.1
    4    18 ms    18 ms    15 ms  84.116.192.61
    5    15 ms    31 ms    15 ms  84.116.192.53
    6    17 ms    31 ms    18 ms  84.116.192.58
    7    19 ms    22 ms    17 ms  84.116.253.5
    8    19 ms    18 ms    17 ms  84.116.253.1
    9    17 ms    18 ms    15 ms  84.116.253.97
    10    19 ms    18 ms    31 ms  84.116.253.118
    11    15 ms    15 ms    15 ms  84.116.253.70
    12    15 ms    18 ms    56 ms  84.116.252.225
    13    18 ms    18 ms    18 ms  84.116.135.230
    14    18 ms    19 ms    19 ms  213.46.178.50
    15    42 ms    28 ms    25 ms  80.239.194.174
    16    26 ms    27 ms    25 ms  212.77.96.77
    17    26 ms    25 ms    28 ms  212.77.100.101
    
    Śledzenie zakończone.

     

  3. PHP: Sprawdzamy jak szybki jest serwer. Wykorzystujemy do tego bardzo popularny skrypt „Computer Language Benchmarks Game” –  http://benchmarksgame.alioth.debian.org/u32/program.php. Możemy go uzupełnić o funkcje mierzenia czasu i wywołać bezpośrednio z przeglądarki:
    <?php
    /* The Computer Language Benchmarks Game
    http://shootout.alioth.debian.org/
    contributed by anon
    modified by Sergey Khripunov
    modified by Tidnab
    */
    
    //////// Mirzenie czasu /////////////
    function getmicrotime()
    {
    $microtime = explode(' ', microtime());
    return $microtime[1] . substr($microtime[0], 1);
    }
    //czas start
    $time_start = getmicrotime();
    /////////////////////////////////////
    //ustawiamy ilość przebiegów
    //$n = $argv[1];
    $n = '500000';
    
    function energy(&$b) {
    $e = 0.0;
    for ($i=0,$m=sizeof($b);$i<$m;$i++) {
    $b1=$b[$i];
    $e += 0.5*$b1[6]*($b1[3]*$b1[3]+$b1[4]*$b1[4]+$b1[5]*$b1[5]);
    for ($j=$i+1; $j<$m; $j++) {
    $b2=$b[$j];
    $dx=$b1[0]-$b2[0]; $dy=$b1[1]-$b2[1]; $dz=$b1[2]-$b2[2];
    $e -= ($b1[6]*$b2[6])/sqrt($dx*$dx + $dy*$dy + $dz*$dz);
    }
    }
    return $e;
    }
    
    $pi=3.141592653589793;
    $solar_mass=4*$pi*$pi;
    $days_per_year=365.24;
    
    $bodies = array(array(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, $solar_mass), //Sun
    array(4.84143144246472090E+00, // Jupiter
    -1.16032004402742839E+00,
    -1.03622044471123109E-01,
    1.66007664274403694E-03 * $days_per_year,
    7.69901118419740425E-03 * $days_per_year,
    -6.90460016972063023E-05 * $days_per_year,
    9.54791938424326609E-04 * $solar_mass),
    array(8.34336671824457987E+00, // Saturn
    4.12479856412430479E+00,
    -4.03523417114321381E-01,
    -2.76742510726862411E-03 * $days_per_year,
    4.99852801234917238E-03 * $days_per_year,
    2.30417297573763929E-05 * $days_per_year,
    2.85885980666130812E-04 * $solar_mass),
    array(1.28943695621391310E+01, // Uranus
    -1.51111514016986312E+01,
    -2.23307578892655734E-01,
    2.96460137564761618E-03 * $days_per_year,
    2.37847173959480950E-03 * $days_per_year,
    -2.96589568540237556E-05 * $days_per_year,
    4.36624404335156298E-05 * $solar_mass),
    array(1.53796971148509165E+01, // Neptune
    -2.59193146099879641E+01,
    1.79258772950371181E-01,
    2.68067772490389322E-03 * $days_per_year,
    1.62824170038242295E-03 * $days_per_year,
    -9.51592254519715870E-05 * $days_per_year,
    5.15138902046611451E-05 * $solar_mass));
    
    // offset_momentum
    $px=$py=$pz=0.0;
    foreach ($bodies as &$e) {
    $px+=$e[3]*$e[6];
    $py+=$e[4]*$e[6];
    $pz+=$e[5]*$e[6];
    }
    $bodies[0][3]=-$px/$solar_mass;
    $bodies[0][4]=-$py/$solar_mass;
    $bodies[0][5]=-$pz/$solar_mass;
    
    $pairs = array();
    for ($i=0,$m=count($bodies); $i<$m; $i++)
    for ($j=$i+1; $j<$m; $j++)
    $pairs[] = array(&$bodies[$i], &$bodies[$j]);
    
    //printf("%0.9f\n", energy($bodies));
    
    $i=0;
    do {
    
    foreach ($pairs as &$p) {
    $a=&$p[0]; $b=&$p[1];
    $dx=$a[0]-$b[0]; $dy=$a[1]-$b[1]; $dz=$a[2]-$b[2];
    
    $dist = sqrt($dx*$dx + $dy*$dy + $dz*$dz);
    $mag = 0.01/($dist*$dist*$dist);
    $mag_a = $a[6]*$mag; $mag_b = $b[6]*$mag;
    
    $a[3]-=$dx*$mag_b; $a[4]-=$dy*$mag_b; $a[5]-=$dz*$mag_b;
    $b[3]+=$dx*$mag_a; $b[4]+=$dy*$mag_a; $b[5]+=$dz*$mag_a;
    }
    
    foreach ($bodies as &$b) {
    $b[0]+=0.01*$b[3]; $b[1]+=0.01*$b[4]; $b[2]+=0.01*$b[5];
    }
    
    } while(++$i<$n);
    
    //printf("%0.9f\n", energy($bodies));
    //////// Mirzenie czasu /////////////
    //czas stop
    $time_stop = getmicrotime();
    $roznica = $time_stop - $time_start;
    echo "<p>";
    echo 'PHP Version: '.phpversion()."<BR />";
    echo 'Server API: ';
    $sapi_type = php_sapi_name();
    if (substr($sapi_type, 0, 3) == 'cgi') {
    echo "CGI/FastCGI<BR />";
    } else {
    echo "You are not using CGI PHP<BR />";
    }
    echo 'Ilosc przebiegow: '."$n<BR />";
    echo 'Czas wykonania: ' . $roznica." sek. </p>";
    /////////////////////////////////////
    ?>

    Rezultat:

    PHP Version: 5.2.17
    Server API: You are using CGI PHP
    Ilosc przebiegow: 500000
    Czas wykonania: 10.4969689846 sek.

     

  4. MySQL:  Do testu prędkości bazy używamy:  PHP MySQL Benchmark Tool (PMBT v. 0.2) – http://unbeknownst.net/?p=321
     
  5. BONUS: Narzędzie do sprawdzania szybkości ładowania się całej strony oraz poszczególnych jej elementów – http://www.octagate.com/service/SiteTimer/

 

Kategorie:apache, PHP Tagi:
  1. Sierpień 22nd, 2013 at 22:25 | #1

    Dzięki za post i przydatne linki. Pomogłeś!

  2. Listopad 19th, 2014 at 01:27 | #2

    W końcu wiem jak porównać szybkości serwerów… Mógłbyś dodać jeszcze trochę tekstu, które parametry i jak porównać, bo dojście do tego trochę zajmuje, ale ogólnie bardzo dobry poradnik.

  3. Styczeń 13th, 2017 at 09:29 | #3

    I was up until 2 am continually refreshing the nikestore’s twitter page and when the
    hyperlink popped up, I instantly clicked it, added
    my size to the cart, and the ready sport started.

  1. Brak jeszcze trackbacków
*