SlideShare a Scribd company logo
О [нагрузочном]
         тестировании и
          мониторинге
       производительности
       для программистов

Александр Шигин, 2010
  shigin@rambler-co.ru
Жизнь проекта


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


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


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


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

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

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

  • определить граничные условия;

  • протестировать;

  • проанализировать результат.
Тестируем

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

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

  • определить граничные условия;

  • протестировать;

  • проанализировать результат.
Цель тестирования
 Если вам надо измерить процент запросов,
 которые уложатся в 800 мс, не надо измерять
 среднее время ответа: измеряйте процент
 таймаутов.

 Среднее время ничего не
 говорит о количестве таймаутов.
Тестируем

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

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

  • граничное условие среднее время ответа

    до 5 мс.
Начнем тест


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

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

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

  •   тестируем nginx + fastcgi сервер;
  •   с помощью самописного скрипта, который
      проверяет вывод;
  •   тестовые машины: два одинаковых
      AMD Athlon64 3500+, FreeBSD 7.0
Первые результаты
      тредов 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 запросов в секунду;
  •   при этом сервер не держит параллельную нагрузку.
Подумаем над ними

          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        тестируемый сервер
Подумаем над ними

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

    запросов в секунду;
  • при этом тестовая программа чрезвычайно

    любит CPU.
Вторая попытка
  тредов 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;
  •   при большом количестве параллельных
      соединений, время ответа растет.
Вторая попытка

  тредов 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;
  •   при большом количестве параллельных
      соединений, велико количество таймаутов.
Вторая попытка

          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        тестируемый сервер
Хитрый тест

    s1          s3       s2
   начало тестирования             C   RPS t/o, %
                              s1   5   1024 30
         ожидание             s3   1    223  20
                              s1   6   1017 51
  окончание проверки
                              s3   1    186  40
     окончание теста
Вторая попытка


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

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

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

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

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

   • лучше, если их будет несколько;

   • не забывайте про ошибки.
 Лучшее тестирование реальное
 тестирование.
Заглушки
   test              serv       mock
          запрос                       Тестирование:
                   20 мс                     20 RPS
               опрос заглушки          Общее время:
                                             120 мс
                                       Одновременно
                   100 мс
                                             ≈ 2.4
Заглушки
   test              serv           mock
          запрос                           Тестирование:
                            опрос                20 RPS
                   500 мс
                                           Общее время:
                                                 520 мс
                                           Одновременно
                   100 мс
                                                 ≈ 12.4
Жизнь проекта


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


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


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

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

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

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

    могут иметь одно среднее;
  • в случаях частого попадания в кеш, вы

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

                              X +...
                         X28 + 272
                    X29+
            X30 +          2
                              2


                      2
Среднее

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


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

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

  • он-лайн.


 Он-лайн: считаем сумму времен ответа и
 количество ответов. Мониторинг разберется.
Онлайн и скользящее




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

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

    могут иметь одно среднее;
  • в случаях частого попадания в кеш, вы

    фактически измеряете cache-hit ratio;
  • хорошо, если среднее cчитают правильно.
Два и один




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




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




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




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


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

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

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

  • его надо считать.
          n               n 2
             (xi − x )2
                   ¯        xi − ( n xi )2/n
   σ2 =                 = i        i

          i
               n−1             n−1
sd

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

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



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




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




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



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




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




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



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

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

    shigin@rambler-co.ru
   friendfeed.com/shigin
slideshare.com/shigin/test

More Related Content

PDF
Alexander shigin slides
PDF
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
PPTX
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
PDF
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
PDF
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
PDF
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
PPT
Smirnov Memcached High Load 2008
Alexander shigin slides
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Smirnov Memcached High Load 2008

What's hot (20)

PPT
Smirnov Memcached Highload 2008
PDF
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
PPT
Threads in java
PDF
Чему мы научились разрабатывая микросервисы?
PDF
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
PDF
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
PDF
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
PDF
Класс!ная Cassandra
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PDF
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
PDF
CodeFest 2011. Нугуманов Н. — Нагрузочное тестирование: Как?
PDF
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
PPTX
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PDF
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
PDF
Повышение производительности бизнес-приложений
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
PPT
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
PPSX
Трансформация управления данными в средах DevTest
PDF
RootConf 2015
Smirnov Memcached Highload 2008
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
Threads in java
Чему мы научились разрабатывая микросервисы?
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Как разработать вычислительную инфраструктуру для большого кластера (Евгений ...
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
Класс!ная Cassandra
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
CodeFest 2011. Нугуманов Н. — Нагрузочное тестирование: Как?
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Повышение производительности бизнес-приложений
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Трансформация управления данными в средах DevTest
RootConf 2015
Ad

Viewers also liked (9)

PPT
Cac nha vat ly noi tieng
PPT
Eugene Lisitsky Web Sockets
PPT
Vladimir Bobrikov Rit2010 Reputation
PPT
Serge P Nekoval Grails
PPTX
Denis Samoseev Risk Management
ODP
Alexander Krizhanovsky Krizhanovsky Hpds
PDF
Max Lapshin Erlyvideo V1
PPT
Artem Volftrub анатомия интернет банка
PDF
Andrew Shitov Rakudo Jonathan
Cac nha vat ly noi tieng
Eugene Lisitsky Web Sockets
Vladimir Bobrikov Rit2010 Reputation
Serge P Nekoval Grails
Denis Samoseev Risk Management
Alexander Krizhanovsky Krizhanovsky Hpds
Max Lapshin Erlyvideo V1
Artem Volftrub анатомия интернет банка
Andrew Shitov Rakudo Jonathan
Ad

Similar to Alexander Shigin Slides (20)

PPTX
Крадущийся сервер, затаившийся диод
PPTX
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
PDF
Нагрузочное_тестирование: как?
PDF
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
PDF
Рост с нуля до 15000 сообщений в секунду. Мучительный и поучительный / Юрий К...
PPTX
ВЕБ-СЕРВИС ДЛЯ РАСПРЕДЕЛЕННОЙ СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ С ФУНК...
PPT
6 лекция. тестирование производительности
PDF
Как мы храним 75 млн пользователей (Денис Бирюков)
PDF
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
PPTX
Hosting for forbes.ru_
PPT
JavaTalks.Unit Testing.Part 1
PPTX
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
PDF
Анастасия Бордонос - Проектирование тестов
PPTX
Нагрузочное тестирование. С чего начать?
PDF
Честное перформанс-тестирование / Дмитрий Пивоваров (ZeroTurnaround)
PDF
SCALABLE LOAD GENERATION CLUSTER CREATION WITH MICROSOFT AZURE
PDF
Проблемы измерения производительности Erlang-приложения / Идрисов Ренат (Mach...
PDF
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
PDF
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
 
PDF
Марина Широчкина - Тестирование
Крадущийся сервер, затаившийся диод
Крадущийся сервер, затаившийся диод (Андрей Аксенов)
Нагрузочное_тестирование: как?
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
Рост с нуля до 15000 сообщений в секунду. Мучительный и поучительный / Юрий К...
ВЕБ-СЕРВИС ДЛЯ РАСПРЕДЕЛЕННОЙ СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ С ФУНК...
6 лекция. тестирование производительности
Как мы храним 75 млн пользователей (Денис Бирюков)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Hosting for forbes.ru_
JavaTalks.Unit Testing.Part 1
Тестирование высоконагруженных облачных веб-сервисов в Amazon - подводные кам...
Анастасия Бордонос - Проектирование тестов
Нагрузочное тестирование. С чего начать?
Честное перформанс-тестирование / Дмитрий Пивоваров (ZeroTurnaround)
SCALABLE LOAD GENERATION CLUSTER CREATION WITH MICROSOFT AZURE
Проблемы измерения производительности Erlang-приложения / Идрисов Ренат (Mach...
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
 
Марина Широчкина - Тестирование

Alexander Shigin Slides

  • 1. О [нагрузочном] тестировании и мониторинге производительности для программистов Александр Шигин, 2010 shigin@rambler-co.ru
  • 2. Жизнь проекта 1 Создание. 2 Тестирование: • функциональное; • нагрузочное. 3 Эксплуатация. 4 Изменение.
  • 3. Жизнь проекта 1 Создание. 2 Тестирование: • функциональное; • нагрузочное. 3 Эксплуатация. 4 Изменение.
  • 4. Тестируем План тестирования: • понять, что мы тестируем; • определить желаемые значения; • определить граничные условия; • протестировать; • проанализировать результат.
  • 5. Тестируем План тестирования: • понять, что мы тестируем; • определить желаемые значения; • определить граничные условия; • протестировать; • проанализировать результат.
  • 6. Цель тестирования Если вам надо измерить процент запросов, которые уложатся в 800 мс, не надо измерять среднее время ответа: измеряйте процент таймаутов. Среднее время ничего не говорит о количестве таймаутов.
  • 7. Тестируем Начинаем тестирование: • тестируем количество запросов в секунду (RPS); • желаемое значение 1000 RPS; • граничное условие среднее время ответа до 5 мс.
  • 8. Начнем тест Что еще нужно для теста? • программа, которую тестируем; • программа, которая тестирует; • несколько серверов.
  • 9. Начнем тест • тестируем nginx + fastcgi сервер; • с помощью самописного скрипта, который проверяет вывод; • тестовые машины: два одинаковых AMD Athlon64 3500+, FreeBSD 7.0
  • 10. Первые результаты тредов 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 запросов в секунду; • при этом сервер не держит параллельную нагрузку.
  • 11. Подумаем над ними 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 тестируемый сервер
  • 12. Подумаем над ними Новые выводы: • максимум для тестовой программы ≈ 644 запросов в секунду; • при этом тестовая программа чрезвычайно любит CPU.
  • 13. Вторая попытка тредов 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; • при большом количестве параллельных соединений, время ответа растет.
  • 14. Вторая попытка тредов 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; • при большом количестве параллельных соединений, велико количество таймаутов.
  • 15. Вторая попытка 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 тестируемый сервер
  • 16. Хитрый тест s1 s3 s2 начало тестирования C RPS t/o, % s1 5 1024 30 ожидание s3 1 223 20 s1 6 1017 51 окончание проверки s3 1 186 40 окончание теста
  • 17. Вторая попытка Выводы: • сервер способен обеспечить ≈ 1000 запросов в секунду; • количество тайм-аутов находится на грани.
  • 18. Общие выводы • тестируйте одну вещь за раз; • изменяйте одну вещь за раз; • контролируйте ваше окружение независимыми тестами; • не забывайте контролировать весь процесс тестирования.
  • 19. Общие выводы • тестируйте одну вещь за раз; • изменяйте одну вещь за раз; • контролируйте ваше окружение независимыми тестами; • не забывайте контролировать весь процесс тестирования.
  • 20. Заглушки Допущения при тестировании: • заглушки не должны отдаваться за 0 сек; • лучше, если их будет несколько; • не забывайте про ошибки. Лучшее тестирование реальное тестирование.
  • 21. Заглушки test serv mock запрос Тестирование: 20 мс 20 RPS опрос заглушки Общее время: 120 мс Одновременно 100 мс ≈ 2.4
  • 22. Заглушки test serv mock запрос Тестирование: опрос 20 RPS 500 мс Общее время: 520 мс Одновременно 100 мс ≈ 12.4
  • 23. Жизнь проекта 1 Создание. 2 Тестирование: • функциональное; • нагрузочное. 3 Эксплуатация. 4 Изменение.
  • 24. Среднее Чем хорошо среднее: • среднее легко считать; • его можно считать онлайн; • оно всем понятно.
  • 25. Среднее Чем плохо среднее: • два абсолютно разных распределения могут иметь одно среднее; • в случаях частого попадания в кеш, вы фактически измеряете cache-hit ratio; • хорошо, если среднее cчитают правильно.
  • 26. Среднее Определения среднего по мнению изготовителей алкогольного тестера Draeger Alcotest 7110 MKIII-C: X +... X28 + 272 X29+ X30 + 2 2 2
  • 27. Среднее Еще один интересный способ посчитать среднее. 99 · x + x ¯ x= ¯ 100
  • 28. Онлайн среднее и скользящее окно Как правильно считать среднее: • скользящее окно; • он-лайн. Он-лайн: считаем сумму времен ответа и количество ответов. Мониторинг разберется.
  • 29. Онлайн и скользящее отклонение до 40%
  • 30. Среднее Чем плохо среднее: • два абсолютно разных распределения могут иметь одно среднее; • в случаях частого попадания в кеш, вы фактически измеряете cache-hit ratio; • хорошо, если среднее cчитают правильно.
  • 31. Два и один Сейчас это выглядит, как два одинаковых сервера.
  • 32. Два и один Вот первый.
  • 33. Два и один А вот второй.
  • 34. Два и один Вы все еще считаете их одинаковыми?
  • 35. Два и один Как такое можно проверить? Очевидный способ распределение времен ответа.
  • 36. Два и один Как такое можно проверить?
  • 37. Два и один Как такое можно проверить? Не менее очевидный, но более простой стандартное отклонение. первое второе 0.256 ± 0.197 0.256 ± 0.296
  • 38. sd Что я знаю про стандартное отклонение, σ ? • его легко считать; • его можно считать он-лайн; • его надо считать. n n 2 (xi − x )2 ¯ xi − ( n xi )2/n σ2 = = i i i n−1 n−1
  • 39. sd Что я знаю про стандартное отклонение, σ ?
  • 40. Гистограммы • Для показа распределение времен ответа можно построить гистограмму; • гистограммы можно строить онлайн, если заранее зафиксировать интервалы; • основная проблема визуализация.
  • 43. Гистограммы • можно строить он-лайн; • главная проблема графика.
  • 46. 0 с. Квартили 1-ый квартиль 2-ой квартиль (медиана) 3-ий квартиль 1 с.
  • 47. Среднее против квартилей третий квартиль значительно меняется а среднее нет
  • 48. Среднее против квартилей третий квартиль значительно меняется а среднее нет
  • 51. Квартили • их нельзя считать он-лайн; • не все понимают, что это.
  • 52. Благодарю за внимание shigin@rambler-co.ru friendfeed.com/shigin slideshare.com/shigin/test
  • 53. Вопросы? shigin@rambler-co.ru friendfeed.com/shigin slideshare.com/shigin/test