Info meet pomiary wydajności

673 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
673
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Info meet pomiary wydajności

  1. 1. Pomiary wydajności Łukasz Wróbel
  2. 2. O mnie …, Gadu-Gadu, Nasza-klasa, RST Architekt http://lukaszwrobel.pl @lukaszwrobel
  3. 3. Plan 1. Po co mierzyć wydajność? 2. Jak mierzyć wydajność? 3. Czego nie robić? 4. Narzędzia
  4. 4. Konkretne rozwiązania różnią się w zależności od zastosowanej technologii. Ogólne założenia pozostają niezmienne.
  5. 5. 1. Po co mierzyć wydajność?
  6. 6. Żeby sprawdzić, czy spełniamy wymagania.
  7. 7. Można by pomyśleć, że idealnie byłoby mieć środowisko identyczne z produkcją: ● maszyny, ● dane, ● ruch na łączach.
  8. 8. Ale: ● powiadomienia: ○ mail, ○ komunikator. ● synchronizacja danych, ● dane osobowe i biznesowe, ● podwójne wdrożenia lub pełna automatyzacja, ● ...
  9. 9. Bardziej praktyczna jest ekstrapolacja.
  10. 10. Sprawdzamy w ograniczonych warunkach. Szukamy granicy wydajności. Oceniamy, jak to się przekłada na produkcję.
  11. 11. Skalowanie liniowe jest pożądane. Według niektórych definicji, tylko takie można nazwać skalowaniem.
  12. 12. 2. Jak mierzyć wydajność?
  13. 13. Od którego momentu skalowanie nie jest liniowe? Sporządzamy wykres: ● na osi X - liczba req/s ● na osi Y - czas odpowiedzi
  14. 14. 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.
  15. 15. czas odpowiedzi req/s
  16. 16. czas odpowiedzi req/s
  17. 17. Odchylenie standardowe czasu odpowiedzi. Małe odchylenie Duże odchylenie działa stabilnie przekroczyliśmy granicę
  18. 18. Dobrze, żeby testy dało się łatwo powtarzać w przyszłości. Zmiana wydajności po zmianie implementacji.
  19. 19. 3. Czego nie robić?
  20. 20. “Dla kilku użytkowników działa, więc chyba nie będzie problemu”.
  21. 21. “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.
  22. 22. Produkcyjna tabela: 5mln wierszy, testowa: 10k. Tam - dysk, tu - RAM. Ścisłe odtwarzanie środowiska produkcyjnego jest trudne, ale nie można popadać w skrajność.
  23. 23. 4. Narzędzia
  24. 24. ab ab -n 1000 -c 50 http://example.com/test/ łącznie 1000 requestów 50 równolegle
  25. 25. ab -n 1000 -c 50 http://example.com/ Document Length: Hmm... 0 bytes
  26. 26. 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
  27. 27. Time taken for tests: 25.803 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 12748000 bytes HTML transferred: 12288000 bytes
  28. 28. 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: received 482.48 [Kbytes/sec]
  29. 29. 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: received 482.48 [Kbytes/sec]
  30. 30. Connection Times (ms) min Connect: Processing: Waiting: Total: Duże wahania! 41 mean[+/-sd] median max 142 216.2 123 6112 279 1098 895.0 775 4779 372 765.6 176 4282 381 1240 927.8 916 9252 78
  31. 31. 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.
  32. 32. Może się okazać, że zamiast znaleźć punkt, od którego wykres przestaje się skalować liniowo, zaczniemy dostawać błędy. To też jest znak.
  33. 33. ab -n 300 -c 20 http://example.com/login Connection 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.
  34. 34. Opcje: ● ● ● ● dane POST/PUT, ciasteczka, uwierzytelnianie HTTP, proxy.
  35. 35. httperf httperf --server=example.com --uri=/login -num-conns=1000 --rate=50 Próbkowanie.
  36. 36. siege Wiele adresów jednocześnie.
  37. 37. Narzędzia zewnętrzne. Póki co - kosztowne w stosunku do możliwości.
  38. 38. Websockety JMeter: brak dojrzałych pluginów. Node.js lub podobne rozwiązania.
  39. 39. Inne narzędzia. Zależne od kontekstu. Nie tylko HTTP i websockety, ale też np. goła transmisja po TCP.
  40. 40. Dziękuję

×