Производительность имеет значение: производительность сайта напрямую влияет на успешность проекта и прибыль.
Что может быть измерено, может быть улучшено: основные показатели (метрики) производительности для веб-приложений: доступность и время отклика.
Почему нельзя доверять усредненным показателям? Процентили. Показатель удовлетворенности пользователей Apdex.
Тестируем производительность. Инструменты нагрузочного тестирования: ab, tsung, jmeter, blazemeter. Регрессионное тестирование производительности.
Следим за нагрузкой и производительностью на продакшен серверах. Инструменты: RRD, Graphite, NewRelic.
Из чего складывается производительность сайта: сервер + сеть + браузер.
Оптимизируем время загрузки страницы. Инструменты: YSlow, Google Page Speed, GTmetrix. Отдача статики с помощью Nginx, используем CDN, переносим сервера ближе к конечным пользователям.
Оптимизируем обработку запросов на сервере. Реверс-прокси. Php-fpm. Производительность СУБД. Кэширование. Стратегии обновления кэша. Асинхронность. Мониторинг фоновых процессов и очередей.
5. «Что может быть измерено,
может быть улучшено»
Измерения дают нам возможность:
– получить объективную численную оценку
скорости работы сайта;
– находить узкие места и устранять проблемы в
производительности системы;
– следить за отклонениями в
производительности системы (мониторинг);
7. Метрики производительности
● Время отклика (application response time)
– Как долго пользователь ждет выполнения
бизнес-транзакции
● Доступность (application availability)
– Как часто бизнес-транзакции выполняются
успешно
● Пропускная способность (throughput)
– Количество транзакций выполняемых за
единицу времени
9. Пример распределения времени отклика
http://apmblog.compuware.com/2012/11/14/why-averages-suck-and-percentiles-are-great/
10. Другой пример распределения времени
отклика
http://apmblog.compuware.com/2012/11/14/why-averages-suck-and-percentiles-are-great/
11. Что такое процентиль?
● K-й процентиль — это точка среди данных,
примечательная тем, что K% всех точек данных
имеют значение меньшее, чем у этой точки.
● 50-й процентиль — также известен как медиана.
12. Как посчитать 90-й процентиль
1) Отсортируйте все данные в наборе по
возрастанию
2) Отбросьте 10% точек данных справа
3) Значение наибольшей из оставшихся точек
данных и будет значением 90-го процентиля
Пример:
1 2 3 4 5 6 7 8 10 17
4 2 3 1 5 17 8 7 6 10Исходные данные:
Данные после сортировки:
90-й процентиль равен 10
15. Расчет Apdex
ApdexT =
NS+NT /2
N
где:
● NS = количество операций из зоны «Довольны» (с
временем исполнения от 0 до Т);
● NT = количество операций из зоны «Удовлетворены»
(с временем исполнения от T до F);
,
16. Шкала значений Apdex
● E — отлично
● G — хорошо
● F — плохо
● P — очень плохо
● U — неприемлемо
19. Тестирование производительности
отвечает на вопросы:
● Каким будет время отклика при текущем
(фиксированном) уровне нагрузки?
● Каким будет время отклика при увеличении
нагрузки в N раз?
● Каким будет время отклика при увеличении
объема обрабатываемых данных в N раз?
20. Performance Testing — процесс:
t
rps Подаваемая нагрузка
t
ms
Время отклика
50%
90%
95%
21. Performance testing — пример:
$ ab -n 100 -c 20 http://localhost/
Concurrency Level: 20
Complete requests: 100
Failed requests: 0
...
Percentage of the requests served within a certain time (ms)
50% 32
90% 50
95% 55
100% 65 (longest request)
Выполнить 100 запросов по 20 одновременно:
22. Performance Testing — инструменты:
● Apache Benchmark (ab) — выполняет один и тот
же запрос
● Siege — может выполнять запросы к URL,
выбранным из файла
● Tsung — позволяет описывать сценарий
тестирования, может генерировать очень
большую нагрузку.
● Jmeter — позволяет записывать сценарий
действий пользователя.
● Blazemeter — облачный сервис совместимый с
Jmeter для генерирования больших нагрузок.
25. Слагаемые производительности
Для конечного пользователя время выполнения
транзакции складывается из:
● Задержек передачи запросов/ответов по сети
● Времени обработки запроса на сервере
● Времени отрисовки страницы в браузере
26. Анализ производительности — инструменты:
● Google Page Speed
● Yahoo Yslow
GTmetrix — комбинированный онлайн инструмент
40. Ссылки
● Performance Related Changes and their User Impact
http://velocityconf.com/velocity2009/public/schedule/detail/8523
● Common Metrics for Application Performance Measurement
http://www.ietf.org/proceedings/46/slides/rmonmib-waldbusser-slides/sld00
● Индекс производительности приложений Apdex
http://www.gilev.ru/apdex-teoriya/
● Нагрузочное тестирование с точки зрения тестирования.
Марина Широчкина, Яндекс.
http://sqagroup.spb.ru/reports/report-load-testing-from-testing-pov/
●
●