Serwery

Testy serwerów

opublikowano przez Łukasz Nawrotek w dniu 2014-10-28

W homecloud nie znajdziemy konkretnych pakietów, ponieważ sami decydujemy z czego korzystamy. My przygotowaliśmy trzy przykładowe konfiguracje serwerów Pro Cloud i sprawdziliśmy jak różnią się wydajnością. Konfiguracje naszych testowych serwerów Pro Cloud przedstawiamy poniżej.

  Serwer-1 Serwer-2 Serwer-3
Liczba rdzeni 1 2 4
Częstotliwość CPU 1000 MHz 2000 MHz 2000 MHz
Miejsce na dysku 40 GB 40 GB 40 GB
Pamięć RAM 1024 MB 2048 MB 4096 MB
Pełna wirtualizacja Nie Nie Nie
Autoskalowanie Nie Nie Nie
Przepustowość 100 Mb/s 100 Mb/s 100 Mb/s
Ilość adresów IPv4 1 1 1
Szacunkowy koszt za miesiąc (netto) 54,72 zł 100,80 zł 181.44 zł

Na każdym serwerze zainstalowany został system CentOS w wersji 6, architektura X86_64. Dodatkowo zainstalowaliśmy Apache 2.2.15, MySQL 5.1.73 oraz PHP 5.3.3. Środowisko graficzne KDE zostało zainstalowane na końcu, gdy było to niezbędne. Jako stronę testową wykorzystaliśmy WordPress z domyślnym stylem. Wyniki są uśrednione, ponieważ wykonywaliśmy kilka pomiarów w różnych godzinach.

UnixBench

Pierwszy test wykonaliśmy z użyciem UnixBench, jest to popularne narzędzie do testowania wydajności komputerów z systemem Linux. UnixBench wykonuje automatycznie kilka pomiarów, bez potrzeby definiowania parametrów lub zmieniania ustawień.

UnixBench

Poniżej zamieściliśmy listę testów, które zostały wykonane podczas pracy narzędzia:

  • Dhrystone 2 using register variables – zestaw instrukcji testujących operacje na liczbach stałoprzecinkowych
  • Double-Precision Whetstone – podobnie jak powyżej, jednak w tym przypadku testowane są operacje na liczbach zmiennoprzecinkowych
  • Execl Throughput – sprawdzenie maksymalnej ilości wywołań execl w ciągu sekundy
  • File Copy 1024/256/4096 bufsize 2000/500/8000 – kopiowanie plików o różnych wielkościach przy różnych rozmiarach bufora
  • Pipe Throughput – sprawdzanie ile razy w ciągu sekundy da się zapisać i odczytać próbkę o wielkości 512 bitów do określonego kanału komunikacyjnego
  • Pipe-based Context Switching - mierzy ile razy dwa procesy mogą wymienić się inkrementowaną liczbą całkowitą poprzez określony kanał komunikacyjny w ciągu sekundy
  • Process Creation – test ile procesów można utworzyć i zabić w określonym czasie
  • Shell Scripts (1/8 concurrent) – sprawdzenie ile skryptów shell serwer może uruchomić i zamknąć w czasie jednej minuty
  • System Call Overhead – szacuje czas potrzebny na wejście i opuszczenie jądra systemu poprzez ciągłe wywoływanie funkcji pobierającej numer procesu

[punkty] więcej = lepiej

Dhrystone 2 using register variables 913
3502
6127
Double-Precision Whetstone 550
1050
1844
Execl Throughput 408
1366
2348
File Copy 1024 bufsize 2000 maxblocks 579
859
722
File Copy 256 bufsize 500 maxblocks 416
535
592
File Copy 4096 bufsize 8000 maxblocks 792
1646
1725
Pipe Throughput 463
1712
3029
Pipe-based Context Switching 224
814
1401
Process Creation 392
1112
1824
Shell Scripts (1 concurrent) 425
1364
2501
Shell Scripts (8 concurrent) 406
1480
2538
System Call Overhead 496
1388
1695
Wynik ogólny 476
1263
1852
  Serwer-1
Serwer-2
Serwer-3

Tak jak można było się spodziewać, serwer o najmocniejsze konfiguracji osiągnął w przypadku większości testów najwyższe wyniki. Różnice pomiędzy serwerami są znaczne. 

ApacheBench

ApacheBench zostało stworzone do wykonywania testów wydajnościowych serwerów HTTP. Jego zadaniem jest wydawanie powtarzających się żądań do określonego serwera. Nazwa może sugerować, że jest przeznaczony wyłącznie do testowania serwera Apache, jednak bezproblemowo możemy sprawdzić inne rozwiązania.

Test został wykonany z innego serwera, ilość zapytań ustawiliśmy na 1000, jednocześnie było wydawane maksymalnie 5 żądań. Poniżej prezentujemy komendę wykonującą testy.

ab -n1000 –c5 adres-strony

mniej = lepiej

Całkowity czas 378 s
98 s
96 s
Średni czas wykonania jednego żądania 1591 ms
592 ms
481 ms
  Serwer-1
Serwer-2
Serwer-3

Generowanie dużego obciążenia

Skorzystaliśmy z usługi LoadImpact, aby sprawdzić jak serwery radzą sobie podczas dużego obciążenia. Przeprowadzony test trwał 30 min, w tym czasie obciążenie rosło od 0 do 1000 tzw. wirtualnych użytkowników. Test został przeprowadzony z jednego serwera zlokalizowanego w Dublinie. Zależność czasu ładowania strony od ilości aktywnych użytkowników przestawiana jest na wykresie (niżej kolejno serwer 1, 2 oraz 3).

load impact serwer

loadimpact - pro cloud

loadimpact

Tutaj również nie ma zaskoczeń, najmocniejszy serwer poradził sobie najlepiej. Czasy odpowiedzi najczęściej są w rozsądnych granicach, biorąc pod uwagę dość duży ruch. Natomiast należy tutaj pamiętać o wpływie konfiguracji na wydajność. W rzeczywistym środowisku bez większych problemów można dokonać optymalizacji i znacznie zmniejszyć czas ładowania (oczywiście do tego celu przydatne są logi serwera i dokładna analiza ruchu). Warto przypomnieć, że usługa Pro Cloud umożliwia skorzystanie z automatycznego skalowania (omawianego wcześniej), jego konfiguracja również może zapewnić czasy dostępu na niskim poziomie nawet przy bardzo dużym ruchu.

HardInfo

Ostatnie testy zostały przeprowadzone za pomocą aplikacji HardInfo. Dostarcza ona informacji o maszynie, na której została uruchomiona (procesor, RAM, karta sieciowa itp.). Dodatkowo posiada kilka testów wydajnościowych. Większość wyników przedstawia czas szyfrowania pewnej próbki danych z wykorzystaniem różnych technologii, który im jest krótszy tym lepszy.

HardInfo

CPU Blowfish
[sek] mniej = lepiej
32,29
8,51
4,81
CPU CryptoHash
[MB/s] więcej = lepiej
45,67
119,41
232,45
CPU Fibonacci
[sek] mniej = lepiej
6,66
3,07
2,99
CPU N-Queens
[sek] mniej = lepiej
15,61
15,86
17,94
FPU FFT
[sek] mniej = lepiej
15,98
3,67
1,54
FPU Raytracing
[sek] mniej = lepiej
56,11
31,45
29,54
  Serwer-1
Serwer-2
Serwer-3