22apr.rif2010 -bunin

Preview:

Citation preview

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

Олег Бунин

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

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

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

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

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

nginx

apache PHP

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

Диск

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

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

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

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

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

Методология

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

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

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

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

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

2 Гб

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

7200 RPM

Пример тестирования 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

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

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

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

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

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

Нагрузили

Посчитали

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

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

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

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

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

правильно!

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

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

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

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

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

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

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

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

10 30 50 70 90 110 130 150 170 190 2100

50

100

150

200

250

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

10 30 50 70 90 110 130 150 170 190 2100

50

100

150

200

250

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

секунды

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

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

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

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

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

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

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

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

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

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

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

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

Вопросы?

Олег Бунинoleg.bunin@ontico.ru

+7 (916) 635-9584