53
О [нагрузочном] тестировании и мониторинге производительности для программистов Александр Шигин, 2010 [email protected]

Alexander Shigin Slides

Embed Size (px)

Citation preview

Page 1: Alexander Shigin Slides

О [нагрузочном]тестировании имониторинге

производительностидля программистов

Александр Шигин, [email protected]

Page 2: Alexander Shigin Slides

Жизнь проекта

1 Создание.2 Тестирование:

• функциональное;• нагрузочное.

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

Page 3: Alexander Shigin Slides

Жизнь проекта

1 Создание.2 Тестирование:

• функциональное;• нагрузочное.

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

Page 4: Alexander Shigin Slides

Тестируем

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

Page 5: Alexander Shigin Slides

Тестируем

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

Page 6: Alexander Shigin Slides

Цель тестирования

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

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

Page 7: Alexander Shigin Slides

Тестируем

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

• желаемое значение 1000 RPS;• граничное условие среднее время ответадо 5 мс.

Page 8: Alexander Shigin Slides

Начнем тест

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

Page 9: Alexander Shigin Slides

Начнем тест

• тестируем nginx + fastcgi сервер;• с помощью самописного скрипта, которыйпроверяет вывод;

• тестовые машины: два одинаковыхAMD Athlon64 3500+, FreeBSD 7.0

Page 10: Alexander Shigin Slides

Первые результаты

тредов 1 2 3 4 5 6 9t, мс 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.3rps 370 543 593 617 626 644 644

• по этим данным, максимум запросов для сервера≈ 600 запросов в секунду;

• при этом сервер не держит параллельную нагрузку.

Page 11: Alexander Shigin Slides

Подумаем над ними

C 1 2 3 4 5 9user s1 20 34 35 44 46 44sys s1 8 12 12 10 10 12user qa 50 71 80 80 79 84sys qa 8 9 13 17 19 16

s1 — тестируемый сервер

Page 12: Alexander Shigin Slides

Подумаем над ними

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

• при этом тестовая программа чрезвычайнолюбит CPU.

Page 13: Alexander Shigin Slides

Вторая попытка

тредов 1 2 3 4 5 6 9t, мс 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.5rps 512 709 868 916 1036 1076 1078

• максимум RPS ≈ 1036;• при большом количестве параллельных

соединений, время ответа растет.

Page 14: Alexander Shigin Slides

Вторая попытка

тредов 1 2 3 4 5 6 9rps 512 709 868 916 1036 1076 1078t/o, % 0 0 6 25 30 51 74

• максимум RPS ≈ 900;• при большом количестве параллельных

соединений, велико количество таймаутов.

Page 15: Alexander Shigin Slides

Вторая попытка

C 3 2 3 4 5 9user s1 35 39 57 64 67 79sys s1 10 16 16 13 15 16user qa 27 39 41 49 79 63sys qa 12 16 17 16 19 23

s1 — тестируемый сервер

Page 16: Alexander Shigin Slides

Хитрый тест

s1 s3 s2

начало тестирования

ожидание

окончание проверки

окончание теста

C RPS t/o, %s1 5 1024 30s3 1 223 20s1 6 1017 51s3 1 186 40

Page 17: Alexander Shigin Slides

Вторая попытка

Выводы:• сервер способен обеспечить ≈ 1000запросов в секунду;

• количество тайм-аутов находится на грани.

Page 18: Alexander Shigin Slides

Общие выводы

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

• не забывайте контролировать весь процесстестирования.

Page 19: Alexander Shigin Slides

Общие выводы

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

• не забывайте контролировать весь процесстестирования.

Page 20: Alexander Shigin Slides

Заглушки

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

Лучшее тестирование — реальноетестирование.

Page 21: Alexander Shigin Slides

Заглушкиtest serv mock

запрос

20 мс

опрос заглушки

100 мс

Тестирование:20 RPS

Общее время:120 мс

Одновременно≈ 2.4

Page 22: Alexander Shigin Slides

Заглушкиtest serv mock

запрос

опрос

500 мс

100 мс

Тестирование:20 RPS

Общее время:520 мс

Одновременно≈ 12.4

Page 23: Alexander Shigin Slides

Жизнь проекта

1 Создание.2 Тестирование:

• функциональное;• нагрузочное.

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

Page 24: Alexander Shigin Slides

Среднее

Чем хорошо среднее:• среднее легко считать;• его можно считать онлайн;• оно всем понятно.

Page 25: Alexander Shigin Slides

Среднее

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

• в случаях частого попадания в кеш, выфактически измеряете cache-hit ratio;

• хорошо, если среднее cчитают правильно.

Page 26: Alexander Shigin Slides

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

X30 +X29+

X28+X27+...

22

2

2

Page 27: Alexander Shigin Slides

Среднее

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

x̄ =99 · x̄ + x

100

Page 28: Alexander Shigin Slides

Онлайн среднее и скользящее окно

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

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

Page 29: Alexander Shigin Slides

Онлайн и скользящее

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

Page 30: Alexander Shigin Slides

Среднее

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

• в случаях частого попадания в кеш, выфактически измеряете cache-hit ratio;

• хорошо, если среднее cчитают правильно.

Page 31: Alexander Shigin Slides

Два и один

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

Page 32: Alexander Shigin Slides

Два и один

Вот первый.

Page 33: Alexander Shigin Slides

Два и один

А вот второй.

Page 34: Alexander Shigin Slides

Два и один

Вы все еще считаете их одинаковыми?

Page 35: Alexander Shigin Slides

Два и один

Как такое можно проверить?

Очевидный способ — распределение временответа.

Page 36: Alexander Shigin Slides

Два и один

Как такое можно проверить?

Page 37: Alexander Shigin Slides

Два и один

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

первое второе0.256± 0.197 0.256± 0.296

Page 38: Alexander Shigin Slides

sd

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

σ2 =n∑i

(xi − x̄)2

n − 1=

∑ni x2

i − (∑n

i xi)2/n

n − 1

Page 39: Alexander Shigin Slides

sd

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

Page 40: Alexander Shigin Slides

Гистограммы

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

• гистограммы можно строить онлайн, еслизаранее зафиксировать интервалы;

• основная проблема — визуализация.

Page 41: Alexander Shigin Slides

Гистограммы

Page 42: Alexander Shigin Slides

Гистограммы

Page 43: Alexander Shigin Slides

Гистограммы

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

Page 44: Alexander Shigin Slides

Классы ответа

Page 45: Alexander Shigin Slides

Классы ответа

Page 46: Alexander Shigin Slides

Квартили

1-ы

й к

варти

ль

2-о

й к

варти

ль

(мед

иан

а)

3-и

й к

варти

ль0 с. 1 с.

Page 47: Alexander Shigin Slides

Среднее против квартилей

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

Page 48: Alexander Shigin Slides

Среднее против квартилей

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

Page 49: Alexander Shigin Slides

Среднее против квартилей

Page 50: Alexander Shigin Slides

Среднее против квартилей

Page 51: Alexander Shigin Slides

Квартили

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

Page 52: Alexander Shigin Slides

Благодарю за внимание

[email protected]/shigin

slideshare.com/shigin/test

Page 53: Alexander Shigin Slides

Вопросы?

[email protected]/shigin

slideshare.com/shigin/test