Jak sprawdzić prędkość serwera www pod hosting?
Szukają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:
- 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
- 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.
- 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.
- MySQL: Do testu prędkości bazy używamy: PHP MySQL Benchmark Tool (PMBT v. 0.2) – http://unbeknownst.net/?p=321
- BONUS: Narzędzie do sprawdzania szybkości ładowania się całej strony oraz poszczególnych jej elementów – http://www.octagate.com/service/SiteTimer/
Dzięki za post i przydatne linki. Pomogłeś!
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.