Your SlideShare is downloading. ×
0
О [нагрузочном]
         тестировании и
          мониторинге
       производительности
       для программистов

Александ...
Жизнь проекта


  1   Создание.
  2   Тестирование:
       • функциональное;
       • нагрузочное.


  3   Эксплуатация.
 ...
Жизнь проекта


  1   Создание.
  2   Тестирование:
       • функциональное;
       • нагрузочное.


  3   Эксплуатация.
 ...
Тестируем

 План тестирования:
  • понять, что мы тестируем;

  • определить желаемые значения;

  • определить граничные ...
Тестируем

 План тестирования:
  • понять, что мы тестируем;

  • определить желаемые значения;

  • определить граничные ...
Цель тестирования
 Если вам надо измерить процент запросов,
 которые уложатся в 800 мс, не надо измерять
 среднее время от...
10000
                                    ’hist2.dat’ using 2:xticlabels(1)


время, с неуспех
0.0      100.0%     1000


...
Тестируем

 Начинаем тестирование:
  • тестируем количество запросов в секунду

    (RPS);
  • желаемое значение 1000 RPS;...
Начнем тест


 Что еще нужно для теста?
  • программа, которую тестируем;

  • программа, которая тестирует;

  • нескольк...
Начнем тест

  •   тестируем nginx + fastcgi сервер;
  •   с помощью самописного скрипта, который
      проверяет вывод;
 ...
Первые результаты
      тредов 1    2   3   4   5   6   9
      t, мс 1.9 2.7 3.9 5.2 6.6 5.4 12.0
      σ      7.0 6.6 4....
Подумаем над ними

          C      1    2     3    4    5    9
       user s1   20   34   35    44   46   44
        sys ...
Подумаем над ними

 Новые выводы:
  • максимум для тестовой программы ≈ 644

    запросов в секунду;
  • при этом тестовая...
Вторая попытка
  тредов 1    2   3   4   5    6     9
   t, мс 1.9 2.7 3.4 4.0 4.6 5.4 8.0
  σ      4.6 7.0 4.7 8.4 7.1 7....
Вторая попытка

  тредов 1    2   3   4   5     6    9
   rps   512 709 868 916 1036 1076 1078
  t/o, % 0    0   6 25 30  ...
Вторая попытка

          C      3    2     3    4    5    9
       user s1   35   39   57    64   67   79
        sys s1 ...
Хитрый тест

    s1           s3      s2
   начало тестирования             C   RPS t/o, %
                              s...
Вторая попытка


 Выводы:
  • сервер способен обеспечить ≈ 1000

    запросов в секунду;
  • количество тайм-аутов находит...
Общие выводы

  •   тестируйте одну вещь за раз;
  •   изменяйте одну вещь за раз;
  •   контролируйте ваше окружение
    ...
Общие выводы

  •   тестируйте одну вещь за раз;
  •   изменяйте одну вещь за раз;
  •   контролируйте ваше окружение
    ...
Заглушки

 Допущения при тестировании:
   • заглушки не должны отдаваться за 0 сек;

   • лучше, если их будет несколько;
...
Заглушки
   test              serv       mock
          запрос                       Тестирование:
                   20 м...
Заглушки
   test              serv           mock
          запрос                           Тестирование:
               ...
Apache benchmark
 Посмотрим на любимый ab и nginx.
 Результаты последовательных тестов на трех
 машинах:

  c   1    2    ...
ab vs nginx
 Я подкорректировал количество запросов так,
 чтобы тест на каждой машине шел ≈ минуту.
 А потом запустил три ...
ab vs nginx


               s1    s2    s3
              7750 13321 11323
 Даже учитывая небольшое время, когда
 тестовые...
Жизнь проекта


  1   Создание.
  2   Тестирование:
       • функциональное;
       • нагрузочное.


  3   Эксплуатация.
 ...
Среднее


 Чем хорошо среднее:
  • среднее легко считать;

  • его можно считать онлайн;

  • оно всем понятно.
Среднее

 Чем плохо среднее:
  • два абсолютно разных распределения

    могут иметь одно среднее;
  • в случаях частого п...
Среднее
 Определения среднего по мнению
 изготовителей алкогольного тестера
 Draeger Alcotest 7110 MKIII-C:

             ...
Среднее

 Еще один интересный способ посчитать
 среднее.


              99 · x + x
                   ¯
           x=
   ...
Онлайн среднее и скользящее окно

 Как правильно считать среднее:
  • скользящее окно;

  • он-лайн.


 Он-лайн: считаем с...
Онлайн и скользящее




                      отклонение до 40%
Среднее

 Чем плохо среднее:
  • два абсолютно разных распределения

    могут иметь одно среднее;
  • в случаях частого п...
Два и один




 Сейчас это выглядит, как два одинаковых сервера.
Два и один




 Вот первый.
Два и один




 А вот второй.
Два и один




 Вы все еще считаете их одинаковыми?
Два и один
 Как такое можно проверить?


 Очевидный способ   распределение времен
 ответа.
Два и один
 Как такое можно проверить?
Два и один
 Как такое можно проверить?
 Не менее очевидный, но более простой
 стандартное отклонение.

        первое     ...
sd
 Что я знаю про стандартное отклонение, σ ?
  • его легко считать;

  • его можно считать он-лайн;

  • его надо считат...
sd

 Что я знаю про стандартное отклонение, σ ?
Гистограммы

  •   Для показа распределения времен ответа
      можно построить гистограмму;
  •   гистограммы можно строи...
Гистограммы
Гистограммы
Гистограммы



  •   можно строить он-лайн;
  •   главная проблема графика.
Классы ответа
Классы ответа
0 с.
                  Квартили




1-ый квартиль




2-ой квартиль
  (медиана)



3-ий квартиль
           1 с.
Среднее против квартилей




               третий квартиль значительно меняется
                                    а сре...
Среднее против квартилей




               третий квартиль значительно меняется
                                    а сре...
Среднее против квартилей
Среднее против квартилей
Квартили



  •   их нельзя считать он-лайн;
  •   не все понимают, что это.
Благодарю за внимание

      shigin@rambler-co.ru
     friendfeed.com/shigin
Вопросы?

 shigin@rambler-co.ru
friendfeed.com/shigin
Upcoming SlideShare
Loading in...5
×

Alexander shigin slides

903

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
903
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Alexander shigin slides"

  1. 1. О [нагрузочном] тестировании и мониторинге производительности для программистов Александр Шигин, 2010 shigin@rambler-co.ru
  2. 2. Жизнь проекта 1 Создание. 2 Тестирование: • функциональное; • нагрузочное. 3 Эксплуатация. 4 Изменение.
  3. 3. Жизнь проекта 1 Создание. 2 Тестирование: • функциональное; • нагрузочное. 3 Эксплуатация. 4 Изменение.
  4. 4. Тестируем План тестирования: • понять, что мы тестируем; • определить желаемые значения; • определить граничные условия; • протестировать; • проанализировать результат.
  5. 5. Тестируем План тестирования: • понять, что мы тестируем; • определить желаемые значения; • определить граничные условия; • протестировать; • проанализировать результат.
  6. 6. Цель тестирования Если вам надо измерить процент запросов, которые уложатся в 800 мс, не надо измерять среднее время ответа: измеряйте процент таймаутов. Среднее время ничего не говорит о количестве таймаутов.
  7. 7. 10000 ’hist2.dat’ using 2:xticlabels(1) время, с неуспех 0.0 100.0% 1000 0.2 14.5% 0.4 10.6% 100 0.6 8.4% 10 0.8 3.6% 1.0 2.7% Среднее: 0.19
  8. 8. Тестируем Начинаем тестирование: • тестируем количество запросов в секунду (RPS); • желаемое значение 1000 RPS; • граничное условие среднее время ответа до 5 мс.
  9. 9. Начнем тест Что еще нужно для теста? • программа, которую тестируем; • программа, которая тестирует; • несколько серверов.
  10. 10. Начнем тест • тестируем nginx + fastcgi сервер; • с помощью самописного скрипта, который проверяет вывод; • тестовые машины: два одинаковых AMD Athlon64 3500+, FreeBSD 7.0
  11. 11. Первые результаты тредов 1 2 3 4 5 6 9 t, мс 1.9 2.7 3.9 5.2 6.6 5.4 12.0 σ 7.0 6.6 4.7 6.9 9.5 7.3 13.3 rps 370 543 593 617 626 644 644 • по этим данным, максимум запросов для сервера ≈ 600 запросов в секунду; • при этом сервер не держит параллельную нагрузку.
  12. 12. Подумаем над ними C 1 2 3 4 5 9 user s1 20 34 35 44 46 44 sys s1 8 12 12 10 10 12 user qa 50 71 80 80 79 84 sys qa 8 9 13 17 19 16 s1 тестируемый сервер
  13. 13. Подумаем над ними Новые выводы: • максимум для тестовой программы ≈ 644 запросов в секунду; • при этом тестовая программа чрезвычайно любит CPU.
  14. 14. Вторая попытка тредов 1 2 3 4 5 6 9 t, мс 1.9 2.7 3.4 4.0 4.6 5.4 8.0 σ 4.6 7.0 4.7 8.4 7.1 7.3 6.5 rps 512 709 868 916 1036 1076 1078 • максимум RPS ≈ 1036; • при большом количестве параллельных соединений, время ответа растет.
  15. 15. Вторая попытка тредов 1 2 3 4 5 6 9 rps 512 709 868 916 1036 1076 1078 t/o, % 0 0 6 25 30 51 74 • максимум RPS ≈ 900; • при большом количестве параллельных соединений, велико количество таймаутов.
  16. 16. Вторая попытка C 3 2 3 4 5 9 user s1 35 39 57 64 67 79 sys s1 10 16 16 13 15 16 user qa 27 39 41 49 79 63 sys qa 12 16 17 16 19 23 s1 тестируемый сервер
  17. 17. Хитрый тест s1 s3 s2 начало тестирования C RPS t/o, % s1 5 1024 30 ожидание s3 1 223 20 s1 6 1017 51 окончание проверки s3 1 186 40 окончание теста
  18. 18. Вторая попытка Выводы: • сервер способен обеспечить ≈ 1000 запросов в секунду; • количество тайм-аутов находится на грани.
  19. 19. Общие выводы • тестируйте одну вещь за раз; • изменяйте одну вещь за раз; • контролируйте ваше окружение независимыми тестами; • не забывайте контролировать весь процесс тестирования.
  20. 20. Общие выводы • тестируйте одну вещь за раз; • изменяйте одну вещь за раз; • контролируйте ваше окружение независимыми тестами; • не забывайте контролировать весь процесс тестирования.
  21. 21. Заглушки Допущения при тестировании: • заглушки не должны отдаваться за 0 сек; • лучше, если их будет несколько; • не забывайте про ошибки. Лучшее тестирование реальное тестирование.
  22. 22. Заглушки test serv mock запрос Тестирование: 20 мс 20 RPS опрос заглушки Общее время: 120 мс Одновременно 100 мс ≈ 2.4
  23. 23. Заглушки test serv mock запрос Тестирование: опрос 20 RPS 500 мс Общее время: 520 мс Одновременно 100 мс ≈ 12.4
  24. 24. Apache benchmark Посмотрим на любимый ab и nginx. Результаты последовательных тестов на трех машинах: c 1 2 5 10 15 20 22 s1 726 1361 3043 5457 6959 7556 7447 s2 1197 2653 5299 10500 14458 15782 15774 s3 995 1876 5352 9300 12792 13530 13689
  25. 25. ab vs nginx Я подкорректировал количество запросов так, чтобы тест на каждой машине шел ≈ минуту. А потом запустил три теста одновременно c 20 потоками на каждой машине: s1 s2 s3 7750 13321 11323
  26. 26. ab vs nginx s1 s2 s3 7750 13321 11323 Даже учитывая небольшое время, когда тестовые машины работали вдвоем, суммарное RPS больше 20 000.
  27. 27. Жизнь проекта 1 Создание. 2 Тестирование: • функциональное; • нагрузочное. 3 Эксплуатация. 4 Изменение.
  28. 28. Среднее Чем хорошо среднее: • среднее легко считать; • его можно считать онлайн; • оно всем понятно.
  29. 29. Среднее Чем плохо среднее: • два абсолютно разных распределения могут иметь одно среднее; • в случаях частого попадания в кеш, вы фактически измеряете cache-hit ratio; • хорошо, если среднее cчитают правильно.
  30. 30. Среднее Определения среднего по мнению изготовителей алкогольного тестера Draeger Alcotest 7110 MKIII-C: X +... X28 + 272 X29+ X30 + 2 2 2
  31. 31. Среднее Еще один интересный способ посчитать среднее. 99 · x + x ¯ x= ¯ 100
  32. 32. Онлайн среднее и скользящее окно Как правильно считать среднее: • скользящее окно; • он-лайн. Он-лайн: считаем сумму времен ответа и количество ответов. Мониторинг разберется.
  33. 33. Онлайн и скользящее отклонение до 40%
  34. 34. Среднее Чем плохо среднее: • два абсолютно разных распределения могут иметь одно среднее; • в случаях частого попадания в кеш, вы фактически измеряете cache-hit ratio; • хорошо, если среднее cчитают правильно.
  35. 35. Два и один Сейчас это выглядит, как два одинаковых сервера.
  36. 36. Два и один Вот первый.
  37. 37. Два и один А вот второй.
  38. 38. Два и один Вы все еще считаете их одинаковыми?
  39. 39. Два и один Как такое можно проверить? Очевидный способ распределение времен ответа.
  40. 40. Два и один Как такое можно проверить?
  41. 41. Два и один Как такое можно проверить? Не менее очевидный, но более простой стандартное отклонение. первое второе 0.256 ± 0.197 0.256 ± 0.296
  42. 42. sd Что я знаю про стандартное отклонение, σ ? • его легко считать; • его можно считать он-лайн; • его надо считать. n n 2 (xi − x )2 ¯ xi − ( n xi )2/n σ2 = = i i i n−1 n−1
  43. 43. sd Что я знаю про стандартное отклонение, σ ?
  44. 44. Гистограммы • Для показа распределения времен ответа можно построить гистограмму; • гистограммы можно строить онлайн, если заранее зафиксировать интервалы; • основная проблема визуализация.
  45. 45. Гистограммы
  46. 46. Гистограммы
  47. 47. Гистограммы • можно строить он-лайн; • главная проблема графика.
  48. 48. Классы ответа
  49. 49. Классы ответа
  50. 50. 0 с. Квартили 1-ый квартиль 2-ой квартиль (медиана) 3-ий квартиль 1 с.
  51. 51. Среднее против квартилей третий квартиль значительно меняется а среднее нет
  52. 52. Среднее против квартилей третий квартиль значительно меняется а среднее нет
  53. 53. Среднее против квартилей
  54. 54. Среднее против квартилей
  55. 55. Квартили • их нельзя считать он-лайн; • не все понимают, что это.
  56. 56. Благодарю за внимание shigin@rambler-co.ru friendfeed.com/shigin
  57. 57. Вопросы? shigin@rambler-co.ru friendfeed.com/shigin
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×