22apr.rif2010 -bunin

20
Нагрузочное тестирование как способ снижения рисков Олег Бунин

Upload: mikhail-lomonosov

Post on 15-Jun-2015

279 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 22apr.rif2010 -bunin

Нагрузочное тестирование как способ снижения рисков

Олег Бунин

Page 2: 22apr.rif2010 -bunin

Зачем мы проводим нагрузочное тестирование?

Page 3: 22apr.rif2010 -bunin

Сложные системы

Page 4: 22apr.rif2010 -bunin

Сложность веб-системы

Электрический сигнал Сетевая карта

Операционная система, Сетевая подсистема

nginx

apache PHP

Операционная система, дисковая подсистема

Диск

ПамятьБаза данных

Page 5: 22apr.rif2010 -bunin

Как тестировать?• Нагрузка дается на систему в совокупности;• Нагрузка дается в течении длительного

времени;• Не говоря уже о профиле нагрузки.

Page 6: 22apr.rif2010 -bunin

Как мы даем нагрузку?

• Профиль нагрузки;• Имитация сессий пользователя;• Медленные клиенты.

Page 7: 22apr.rif2010 -bunin

Методология

• Описание аппаратной конфигурации;• Описание конфигураций веб-сервера;• Профиль нагрузки;

Page 8: 22apr.rif2010 -bunin

Пример тестирования 1С-Битрикс: Аппаратная часть

Операционная система CentOs, ядро 2.6.18

ПроцессорIntel(R) Core(TM)2 Duo CPU

E4500 2.20GHzОбъем оперативной памяти

2 Гб

Жесткий диск Western Digital WD2500YS 250GB

7200 RPM

Page 9: 22apr.rif2010 -bunin

Пример тестирования 1С-Битрикс: программная конфигурация

Nginx (версия 0.6.39), Apache (версия 2.2.3, Prefork), PHP (5.2.12), ZendServer CE

Параметры конфигурации Apache:– StartServers: 50– MinSpareServers: 50– MaxSpareServers: 50– MaxClients: 50– ServerLimit: 50– MaxRequestsPerChild: 100

Параметры конфигурации nginx:– worker_processes: 8– use epoll;– worker_connections: 10240

Параметры конфигурации MySQ::• thread_cache_size: 48• max_connections: 100

Параметры PHP• session.gc_maxlifetime: 300

Page 10: 22apr.rif2010 -bunin

Пример тестирования 1С-Битрикс: Профиль нагрузки

Каталог % от списка задач/ 0.51%/content/ 41.65%/e-store/ 23.28%/examples/ 14.1%/personal/ 3.18%/search/ 17.28%

Page 11: 22apr.rif2010 -bunin

Что должно быть в результате?• Оптимизация настроек;• Рефакторинг узких мест;• Данные о поведении системы под

нагрузкой;• Сенсационные цифры!

Page 12: 22apr.rif2010 -bunin

Процесс оптимизации и рефакторинга

Нагрузили

Посчитали

Прослезились

Внесли изменения

Page 13: 22apr.rif2010 -bunin

За нагружаемой системой наблюдают все: тестировщики,

администраторы и разработчики!

Page 14: 22apr.rif2010 -bunin

Кривая деградации• Как умирает система? Надо умирать

правильно!

Глупая бессмысленная смерть

1 2 3 4 5 6 7 8 9 10 110

10

20

30

40

50

60

70

Смерть героя!

1 2 3 4 5 6 7 8 9 10 110

10

20

30

40

50

60

70

Page 15: 22apr.rif2010 -bunin

Кривая деградации

Стандартные настройки Apache, MySQL и PostgreSQL вообще не предназначены для

серьезной работы

Page 16: 22apr.rif2010 -bunin

Как умирает Битрикс?

222 запроса в секунду

19 миллионов в сутки

10 30 50 70 90 110 130 150 170 190 2100

50

100

150

200

250

Page 17: 22apr.rif2010 -bunin

Как умирает Битрикс?

10 30 50 70 90 110 130 150 170 190 2100

50

100

150

200

250

Среднее время ответа – 2.5

секунды

Page 18: 22apr.rif2010 -bunin

Сенсационные цифры

Скорость обработки запросов (запросов в сек) 222,08

Количество ошибок 50x 0,77%

Запросов в день 19 187 712

Среднее время по больнице (сек) 2,538

Ожидание более 5 секунд 0,96%

Page 19: 22apr.rif2010 -bunin

Осмысленные цифры

Скорость обработки запросов (запросов в сек) 130

Количество ошибок 50x 0,4%

Запросов в день 11 232 000

Среднее время по больнице (сек) 0,44

Ожидание более 5 секунд 0,2%

Page 20: 22apr.rif2010 -bunin

Вопросы?

Олег Бунин[email protected]

+7 (916) 635-9584