Web Design Blog / Hosting:

Testowanie hostingu WWW (benchmark) w praktyce

Data publikacji: 17 kwietnia 2019

Wybierając hosting dla naszej strony internetowej czy aplikacji mamy możliwość zapoznania się ze specyfikacjami, które informują nas ile będziemy mieć przestrzeni dyskowej i co najwyżej o liczbie dostępnych procesorów (raczej rdzeni). Ilość kont e-mail lub „nielimitowany transfer” to zwroty typowo marketingowe, które nie są ani precyzyjne ani istotne z technicznego punktu widzenia.

Wiedza o tym ile będziemy mieli procesorów albo gigabajtów na dysku nie pozwala nam oszacować jakiego typu aplikację będzie można na takim hostingu utrzymywać ani ile jednocześnie użytkowników będzie mogło z niego korzystać (zakładając że używamy popularnych skryptów typu WordPress lub PrestaShop).

W tym artykule pokażę jak testować nawet te najtańsze pakiety hostingów wirtualnych za pomocą dość prostych technik, który każdy może sobie zastosować. Na pierwszy ogień niech pójdzie szybkość skryptów PHP.

Wydajność interpretera PHP

Wydajność PHP to dość dokładny wskaźnik, dzięki któremu możemy porównać kondycję dwóch hostingów PHP. Na wydajność a ściślej czas wykonywania się skryptów mają wpływ trzy zasadnicze kwestie.

Po pierwsze: wersja interpretera PHP (jak wiadomo PHP w wersji 7 jest kilkakrotnie szybszy od wersji PHP 5), zainstalowane moduły oraz całe środowisko. Po drugie: moc, ilość wątków i architektura procesora. Po trzecie: load czyli wskaźnik obciążenia.

Hostingi wirtualne (których zasoby są prawie zawsze współdzielone a często także wirtualizowane) musimy traktować jako tzw. black box. Czyli zapominamy wszystko to co nam się wydaje że o nich wiemy (lub co nam jest obiecywane w specyfikacjach) i przetestować je za pomocą operacji matematycznych, operacji dyskowych a także połączeń sieciowych.

Jak dokonać benchmarku serwera PHP? To proste, wystarczy stworzyć jeden plik z dowolnymi operacjami o których wspomniałem i dodać do niego instrukcję badającą czas wykonania się. Wysyłając taki plik i uruchamiając je na serwerach, których zakup rozważamy kupić otrzymamy odpowiedź, który z serwerów radzi sobie najlepiej w praktyce.

Otrzymywanie czasu wykonania się zapytania

Aby otrzymać czas wykonania się skryptu należy dodać na samym początku pliku instrukcję inicjującą czas uniksowy z dokładnością do mikrosekund:

<?php $t_start = microtime(true); ?>

Następnie dodać skrypty testujące. Przykładowo pętle z przypisaniami, sumowaniem liczb, znajdowania liczb pierwszych:

function pierwsze($n){
for($i=1;$i<=$n;$i++){ 
$l = 0;
for($j=1;$j<=$i;$j++){
         if($i % $j==0){
            $l++;
           }
        }
     if($l==2){
   echo $i.", ";
}
}
}
pierwsze(20000);

Jeżeli chcesz przetestować operacje na plikach to znajdziesz je w artykule o: imporcie i eksporcie CSV w PHP

Na koniec dodajemy podsumowanie:

$t_koniec = microtime(true);
$t_calkowite = ($t_koniec - $t_start);
echo "Czas: ".$t_calkowite."</h2>";

Po wszystkim otrzymujemy czas konkretnego serwera. tak wygląda przykładowy wynik działania skryptu.

Badanie wydajności serwera na podstawie czasu odpowiedzi MySQL

Prędkość działania bazy danych też jest dobrym wskaźnikiem wydajności. To od wydajności bazy danych często zależy faktyczna płynność stron i aplikacji internetowych.

W przypadku hostingów wirtualnych mamy do dyspozycji bazę danych z czegoś w rodzaju PrivateSQL czyli de facto osobnego serwera znowu współdzielonego ale wyspecjalizowanego do obsługi baz danych. Jeżeli mamy platformę LAMP na VPS lub serwerze dedykowanym to oczywiście testujemy to samo co wyżej.

Możemy stworzyć kolejny plik PHP lub od razu udać się do phpMyAdmin i odpytać bazę o jakiekolwiek dane za pomocą polecenia:

 SELECT SQL_NO_CACHE * FROM tabela;

Komenda SQL_NO_CACHE wyłącza korzystanie z indeksów a klikając w profilowanie (mały checkbox do zaznaczenia po wykonaniu zapytania po prawej na dole) pozwoli nam przyjrzeć się jaki proces jak długo trwa co przyniesie nam dużo wskazówek o wydajności naszego serwera i bazy danych:

Badanie wydajności serwera i połączenia internetowego za pomocą TTFB

TTFB (ang. Time To First Byte) to czas od momentu wysłania żądania przez klienta do pierwszego odebranego bajtu odpowiedzi. Jest to zatem suma czasu komunikacji w obie strony i czasu potrzebnego serwerowi na przygotowanie odpowiedzi. Jeżeli zainstalujemy ten sam skrypt na dwóch hostingach i zbadamy TTFB z perspektywy użytkownika łączącego się z Polski otrzymamy dość jednoznaczną wskazówkę z którego dostawcy hostingu skorzystać. TTFB można sprawdzić z różnych miejsc na Ziemi za pomocą narzędzi online np. tu: http://www.bytecheck.com/ albo za pomocą przeglądarki internetowej.

Symulacja intensywnego ruchu

Trudno przewidzieć jak witryna będzie się zachowywać w przypadku intensywnego ruchu. Tutaj z pomocą przychodzą nam usługi takie jak https://loadimpact.com/ Za pomocą tej usługi wygenerujemy sztuczny ruch z zewnętrznych urządzeń, które będą symulować ruch. Wyniki takich testów analizują jak serwer zachowywał się w przypadku różnej ilości wizyt i odsłon.

Podczas testu możemy sami oczywiście sami surfować po witrynie i doświadczyć ewentualnych spadków wydajności. Płatne plany pozwalają na symulację z udziałem większej ilości wirtualnych użytkowników.

Dla nerdów: usługa TOP w systemie Linux

Uruchamiając tę samą aplikację na dwóch serwerach, można sprawdzić za pomocą komendy top aktualne zużycie zasobów procesora.

Podsumowanie

Wykonywanie takich testów wydajności pozwoli z większą świadomością wybrać dopasowaną opcję hostingową. Informacje udostępniane przez dostawców w cennikach i ofertach nie niosą zazwyczaj nic przydatnego. Dzięki testom bazującym na realnych przypadkach użycia wyselekcjonujemy najlepszą z możliwych opcji.


Komentarze

Brak komentarzy.

Dodaj swój komentarz