of 40 /40
Pomiary wydajności Łukasz Wróbel

Info meet pomiary wydajności

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Info meet pomiary wydajności

Pomiary wydajnościŁukasz Wróbel

Page 2: Info meet pomiary wydajności

O mnie

…, Gadu-Gadu, Nasza-klasa, RST

Architekt

http://lukaszwrobel.pl

@lukaszwrobel

Page 3: Info meet pomiary wydajności

Plan

1. Po co mierzyć wydajność?

2. Jak mierzyć wydajność?

3. Czego nie robić?

4. Narzędzia

Page 4: Info meet pomiary wydajności

Konkretne rozwiązania różnią się w zależności od zastosowanej technologii.

Ogólne założenia pozostają niezmienne.

Page 5: Info meet pomiary wydajności

1. Po co mierzyć wydajność?

Page 6: Info meet pomiary wydajności

Żeby sprawdzić, czy spełniamy wymagania.

Page 7: Info meet pomiary wydajności

Można by pomyśleć, że idealnie byłoby mieć środowisko identyczne z produkcją:

● maszyny,● dane,● ruch na łączach.

Page 8: Info meet pomiary wydajności

Ale:● powiadomienia:

○ mail,○ komunikator.

● synchronizacja danych,● dane osobowe i biznesowe,● podwójne wdrożenia lub pełna

automatyzacja,● ...

Page 9: Info meet pomiary wydajności

Bardziej praktyczna jest ekstrapolacja.

Page 10: Info meet pomiary wydajności

Sprawdzamy w ograniczonych warunkach.

Szukamy granicy wydajności.

Oceniamy, jak to się przekłada na produkcję.

Page 11: Info meet pomiary wydajności

Skalowanie liniowe jest pożądane.

Według niektórych definicji, tylko takie można nazwać skalowaniem.

Page 12: Info meet pomiary wydajności

2. Jak mierzyć wydajność?

Page 13: Info meet pomiary wydajności

Od którego momentu skalowanie nie jest liniowe?

Sporządzamy wykres:● na osi X - liczba req/s● na osi Y - czas odpowiedzi

Page 14: Info meet pomiary wydajności

Skala na osi X musi być liniowa, inaczej interpretacja wyniku będzie nieprawidłowa.

Skalowanie nie jest liniowe, kiedy wykres przestaje być wykresem funkcji liniowej.

Page 15: Info meet pomiary wydajności

czasodpowiedzi

req/s

Page 16: Info meet pomiary wydajności

czasodpowiedzi

req/s

Page 17: Info meet pomiary wydajności

Odchylenie standardowe czasu odpowiedzi.

Małe odchylenie Duże odchylenie

działa stabilnie przekroczyliśmy granicę

Page 18: Info meet pomiary wydajności

Dobrze, żeby testy dało się łatwo powtarzać w przyszłości.

Zmiana wydajności po zmianie implementacji.

Page 19: Info meet pomiary wydajności

3. Czego nie robić?

Page 20: Info meet pomiary wydajności

“Dla kilku użytkowników działa, więc chyba nie będzie problemu”.

Page 21: Info meet pomiary wydajności

“Wysyłaliśmy tyle req/s i tak działało”.

Nadal nie mamy informacji, gdzie kończą się możliwości skalowania.

Trzeba wykonać testy dla różnych (rosnących) wartości obciążenia.

Page 22: Info meet pomiary wydajności

Produkcyjna tabela: 5mln wierszy,testowa: 10k.

Tam - dysk, tu - RAM.

Ścisłe odtwarzanie środowiska produkcyjnego jest trudne, ale nie można popadać w skrajność.

Page 23: Info meet pomiary wydajności

4. Narzędzia

Page 24: Info meet pomiary wydajności

ab

ab -n 1000 -c 50 http://example.com/test/

łącznie 1000 requestów50 równolegle

Page 25: Info meet pomiary wydajności

ab -n 1000 -c 50 http://example.com/

Document Length: 0 bytes

Hmm...

Page 26: Info meet pomiary wydajności

ab -n 1000 -c 50 http://example.com/login

Server Software: Apache/2.2.21

Server Hostname: example.com

Server Port: 80

Document Path: /login

Document Length: 12288 bytes

Concurrency Level: 50

Page 27: Info meet pomiary wydajności

Time taken for tests: 25.803 seconds

Complete requests: 1000

Failed requests: 0

Write errors: 0

Total transferred: 12748000 bytes

HTML transferred: 12288000 bytes

Page 28: Info meet pomiary wydajności

Requests per second: 38.76 [#/sec] (mean)

Time per request: 1290.133 [ms] (mean)

Time per request: 25.803 [ms] (mean, across all concurrent requests)

Transfer rate: 482.48 [Kbytes/sec] received

Page 29: Info meet pomiary wydajności

Requests per second: 38.76 [#/sec] (mean)

Time per request: 1290.133 [ms] (mean)

Time per request: 25.803 [ms] (mean, across all concurrent requests)

Transfer rate: 482.48 [Kbytes/sec] received

Page 30: Info meet pomiary wydajności

Connection Times (ms)

min mean[+/-sd] median max

Connect: 41 142 216.2 123 6112

Processing: 279 1098 895.0 775 4779

Waiting: 78 372 765.6 176 4282

Total: 381 1240 927.8 916 9252

Duże wahania!

Page 31: Info meet pomiary wydajności

Sensowny document length? Błędy?

Jeśli n małe, to możemy dostać trochę zafałszowane wyniki.Na krótką metę zadziała, ale zaraz się udusi.

Czasem warto powtórzyć testy.

Page 32: Info meet pomiary wydajności

Może się okazać, że zamiast znaleźć punkt, od którego wykres przestaje się skalować liniowo, zaczniemy dostawać błędy.

To też jest znak.

Page 33: Info meet pomiary wydajności

ab -n 300 -c 20 http://example.com/loginConnection Times (ms)

min mean[+/-sd] median max

Connect: 34 38 5.2 36 71

Processing: 64 107 24.4 106 248

Waiting: 62 106 24.5 105 248

Total: 99 145 25.1 144 283

Teraz lepiej. Patrzymy na rps.

Page 34: Info meet pomiary wydajności

Opcje:● dane POST/PUT,● ciasteczka,● uwierzytelnianie HTTP,● proxy.

Page 35: Info meet pomiary wydajności

httperf

httperf --server=example.com --uri=/login --num-conns=1000 --rate=50

Próbkowanie.

Page 36: Info meet pomiary wydajności

siege

Wiele adresów jednocześnie.

Page 37: Info meet pomiary wydajności

Narzędzia zewnętrzne.

Póki co - kosztowne w stosunku do możliwości.

Page 38: Info meet pomiary wydajności

Websockety

JMeter: brak dojrzałych pluginów.

Node.js lub podobne rozwiązania.

Page 39: Info meet pomiary wydajności

Inne narzędzia.

Zależne od kontekstu.

Nie tylko HTTP i websockety, ale też np. goła transmisja po TCP.

Page 40: Info meet pomiary wydajności

Dziękuję