1 / 23

Интерпретация результатов нагрузочного тестирования – что корректировать, где и как

Интерпретация результатов нагрузочного тестирования – что корректировать, где и как. Сербул Александр Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс. Популярные ошибки. Нет четкой цели – для чего. Просто: «а давайте нагрузим…»

paytah
Download Presentation

Интерпретация результатов нагрузочного тестирования – что корректировать, где и как

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Интерпретация результатов нагрузочного тестирования – что корректировать, где и как Сербул Александр Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс

  2. Популярные ошибки Нет четкой цели – для чего. Просто: «а давайте нагрузим…» Нередко проводят нагрузочное тестирование – неправильно, выводы - кривые Получают кучу результатов – и не могут их растолковать Неправильно представляют клиенту результаты нагрузочного тестирования

  3. Популярные ошибки - DDOS Нагрузили систему, все вдруг стало колом, что делать?  Оказалось – безнадежно «задедосили» с ab. Создаем разумную, похожую на боевую, нагрузку. Очереди в nginx/php-fpm – не должны расти! Система должна свободно дышать: top iostat –xm 5

  4. Популярные ошибки – грузим одну страницу Грузили только главную страницу (с включенным кэшем). Пришли реальные пользователи и … система стала колом. При нагрузке: Нужно обращаться к разным страницам веб-системы. Нужно загрузить демо-данные (реальный объем). Важно авторизовывать хиты. Проверяем производительность загрузки статики.

  5. Подготовка – логи Собираем логи: Лог jmeter – latency запроса, код http Лог nginx – latency общее, latency к upstream Лог apache/php-fpm – latency, код http, system/user time, memory Логошибок php Лог медленных запросов php-fpm - трейсы Данные sarили atop – что творилось на сервере в это время

  6. Подготовка – рисуем графики Важно наблюдать картину в динамике на графиках: munin/cacti/pnp4nagios: Апач – запросы Nginx – запросы MySQL – запросы, потоки Процессор – user/system/iowait Память – использование и распределение Своп – использование Диски – latency, %util Сеть – tcp, трафик

  7. Подготовка - скрипты • Полезно написать несколько скриптов обработки логов: • Гистограмма времени запросов • Гистограмма ошибок • Гистограмма расхода памяти • Технологии: awk, bash, php. Скрипты - в блоге Битрикс на Хабре или пишите нам. • cat /var/log/www.access.log | awk-F# '{ zone = int($10/100)*100; hits[zone]++; } \ • END { for (z in hits) {printf("%8s ms: %8s,%6.2f% ",z,hits[z],hits[z]/total*100);{s="";a=0;while(a++<int(hits[z]/total*100)) s=s"*";print s} } }' \ • total="$TOTAL" - | sort -n

  8. Понимание сценария выполнения хита Очень важно понять, как проходит хит клиента к PHP: Браузер клиента делает HTTP-запрос к nginx nginxпроксирует запрос к apache/php-fpm PHP обращается к БД PHP строит страницу и возвращает ее nginx nginx в http-ответе возвращает ответ в браузер клиента Будет понятно что «подкручивать».

  9. Понимание сценария выполнения хита Браузер клиента делает HTTP-запрос к nginx Статика отдается, как правило, очень быстро или ищем причину. nginxпроксирует запрос (к upstream), ждет и возвращает: 200 ОК 500 Internal Server Error 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout

  10. Понимание сценария выполнения хита • Браузер клиента делает HTTP-запрос к nginx • Нужно понять и вызубрить, какие статусы ошибок когда возвращаются: • PHP выполнятся слишком долго (подкручиваем таймауты, смотрим трейсphp-fpm slow log …) • PHP остановился с fatal error • nginxнесмог «достучаться» до apache/php (БД держит хит, сокет наружу открылся …): • Apache mod_status, php-fpm pm.status_path, ps/top

  11. Понимание сценария выполнения хита 2. nginxпроксирует запрос к apache/php-fpm Выбор upstream и время отработки запроса в нем – в лог Недоступность upstream – забита очередь? /server-status netstat atop/sar Тормоза в БД = забивание очереди между nginxи apache/php-fpm

  12. Понимание сценария выполнения хита 3. PHP обращается к БД Логируем ошибки в БД: define("ERROR_EMAIL", "admin@site.ru, support@site.ru"); Лог медленных запросов к БД – анализируем. График числа потоков в БД – максимум. Траффик к БД – график. График числа медленных запросов к БД. Percona Server.

  13. Понимание сценария выполнения хита 4. PHP строит страницу и возвращает ее nginx Ошибки в логе PHP. Лог медленных запросов php-fpm. Поставьте pinbaи рисуйте графики выполнения частей страницы php – где тормозит?

  14. Понимание сценария выполнения хита 5. nginx в http-ответе возвращает ответ в браузер клиента Проверяем размер и сжатие в логах. Проверяем статику – идет через nginx, в логах php – пусто. Заглушка «200 ОК» вместо страницы? Бывает. 404 страница – статика или динамика?

  15. Пошла нагрузка … жжж

  16. Система работает в штатном режиме? Не перегружена ли текущая веб-система? /server-status (Apache mod_status) Число ошибок и таймаутов в логах Перегруженная текущая веб-система – не готова к нагрузке!

  17. Система работает в штатном режиме? nginxhttp_stub_status_module apachetop –f <лог nginx>, <лог apache> Число потоков в БД – разумное Лог медл. запросов к БД – не растет mysql: show processlist – пусто (почти) CPU – нагрузкаадекватная Память – не уходит в swap Трафик к клиенту и БД Нагрузка на диск Перегруженная текущая веб-система – не готова к нагрузке!

  18. Трактуем результаты - nginx Считаем процент ошибок в логах: nginx 200 – 95% 50x – 5% - почему? «подкручиваем» Latency (200 OK) для статики: среднее, 90%, 99%, распределение. Время соед. с upstream > 1 сек?

  19. Трактуем результаты – apache/php-fpm % ошибок в логах apache/php-fpm: segfaults – бывает, но интересно почему? Ищем причины. fatal errors – ?? warnings - ?? php-fpm slow log latency (200 OK): cреднее, 90%, 99%, распределение Исп. памяти > 500МБ?? Связываем с логом nginx

  20. Трактуем результаты – БД Число медл. запросов – откуда? Пики числа потоков в БД Анализ медленных запросов, оптимизация Связываем с логом nginx

  21. Трактуем результаты – для клиента Число хитов (10 млн.) Продолжительность тестирования (сутки) Время построения страницы: среднее, 90%, 99% (0.3, 1.1, 1.8) Распределение времени - гистограмма Процент ошибок (0.2%) – клиенты получили страницу об ошибке Красивые графики

  22. Что и где «подкручивать» Берем/подсматриваем в виртуальную машину Битрикс Читаем курсы 1С-Битрикс Сбалансированная конфигурация nginx->apache/php-fpm Nginx – отдает статику, php- динамику Адекватно настроенная БД Оптимальные настройки PHP – прекомпилятор и др. (проверка в админкеБитрикс) Аккуратная разработка на PHP, станд. компоненты, «Монитор качества»

  23. Спасибо за внимание! Вопросы? Александр Сербулserbul@1c-bitrix.ruAlexSerbul

More Related