2015 Битрикс - Аудит производительности изнутри. Как самому научиться следить за производительностью сайта.pptx
- Количество слайдов: 83
Партнерская конференция « 1 С-Битрикс» Аудит производительности изнутри. Как самому научиться следить за производительностью сайта Евгений Потапов ITSumma Александр Лыженков Aero
Партнерская конференция 2015 Евгений Потапов генеральный директор компании ITSumma • Круглосуточное администрирование и техническая поддержка веб-сайтов • На поддержке Caramba. TV, Наше Радио, Aero, Бюро Пирогова, Пост. Наука, Marketium, Travelata, Alter. Geo, Invisible, Vse. Mayki, Academ. Media • 100 миллионов уникальных посетителей в сутки • Штат – 50 человек #bitrixconf 2015
Партнерская конференция 2015 Александр Лыженков технический директор компании Aero Creative Agency • Специализируемся на создании, поддержке и развитии технологичных e-commerce проектов. Выводим крупнейшие ритейл-бренды в онлайн. • Среди наших клиентов: «Евросеть» , «Мегафон-Ритейл» , ЦУМ, «Центр. Обувь» , «Технопарк» , «Техносила» , «Альфа. Страхование» , СГ МСК, « 1 С» , «Уральские авиалинии» , Yota Devices, Forex Club. • Постоянный штат – 20 человек #bitrixconf 2015
Партнерская конференция 2015 Типичные проблемы поддержки • Долгое время ответа веб-сайта. • Критическое потребление ресурсов сервера (CPU, диски) • Рост нагрузки при скачках посещаемости • Проблемы при выкладке нового кода • Проблемы с «железом» #bitrixconf 2015
Партнерская конференция 2015 Содержание • Когда пришло время делать аудит? • Как проводить аудит? Какой есть инструментарий? • Пример проведения аудита #bitrixconf 2015
Партнерская конференция 2015 Когда нужно делать аудит? два «полюса» в разработке • Сначала все сделаем и «зарелизим» , а там – посмотрим • Заранее спланировать код так, чтобы он был высокопроизводительным #bitrixconf 2015
Партнерская конференция 2015 Сначала все сделаем… #bitrixconf 2015
Партнерская конференция 2015 …а там посмотрим #bitrixconf 2015
Партнерская конференция 2015 …А может детально проработать каждый момент? #bitrixconf 2015
Партнерская конференция 2015 «Быстро все сделаем» типичные проблемы • Неоптимальный код на основе которого разработано много элементов сайта • «Бомба замедленного действия» - неожиданное падение производительности в процессе эксплуатации • Плавное увеличение времени ответа с каждой новой «фичей» #bitrixconf 2015
Партнерская конференция 2015 Неоптимальный код на основе которого разработано много элементов сайта Разработанная функциональность используется для последующих доработок, и тогда, когда приходит необходимость оптимизации кода – код уже очень не просто изменить #bitrixconf 2015
Партнерская конференция 2015 «Бомба замедленного действия» Посещаемость выросла в 5 раз, а нагрузка на процессор – в 12 #bitrixconf 2015
Партнерская конференция 2015 Время ответа незаметно увеличивается с каждой новой «фичей» , пока не становится критическим #bitrixconf 2015
Партнерская конференция 2015 Как попытаться избежать проблем? Итеративный подход к аудиту • Разрабатываем часть функциональности сайта • Проводим аудит • Дорабатываем самые «тормозные» моменты • Разрабатываем дальше • Проводим аудит #bitrixconf 2015
Партнерская конференция 2015 Аудит производительности – это не так сложно. Состоит из: • Аудита инфраструктуры (Аудит серверного ПО и «железа» , мониторинг) • Аудита кода (С использованием встроенного инструментария 1 С-Битрикс) • Аудита фронт-энда, скорость сайта (Анализ времени загрузки страницы) #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Когда и как применять • Цель – убедиться в том, что причина возможных проблем – не «экосистема» сервера • Чаще всего – в боевой эксплуатации. • Часть 1: первичный анализ сервера • Часть 2: мониторинг в течении продолжительного времени #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Что анализируем? Факторы влияющие на время ответа сайта • Специфика настройки веб-сервера. • Нагрузка на процессор • Нагрузка на дисковую подсистему • Проблемы с работой базы данных • Проблемы с сетевыми интерфейсами #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 1. Анализ хостинга/DNS • Какой хостинг использован? Hetzner/Fast. VPS? Надо срочно проверить SMART состояние дисков. • Каково значение TTL в DNS? Оптимально <900 секунд. Больше – проблемы в случае срочного переезда. #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 2. Анализ аппаратной конфигурации - Процессор • Какова частота процессора? Сколько ядер? Если нужно быстро отдавать страницу пользователю – важна частота (>2. 5 ггц) Если нужно отдавать сайт многим одновременным пользователям важно число ядер (как минимум >=4) #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 3. Анализ аппаратной конфигурации – Жесткие диски • Каков тип жестких дисков – SATA или SSD? Есть возможность поставить SSD? Если да – запланировать использование SSD для базы данных. #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 4. Анализ ПО сервера. Инструменты – проверка системы #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 5. Анализ настроек операционной системы и веб-части • Open files limit (https: //rtcamp. com/tutorials/linux/increase-open-files-limit/) • PHP – убедиться что есть opcache (apc/zend opcache) • PHP – убедиться, что память опкэш-акселератора не заполнена • Nginx+apache? Убедиться в том, что статика отдается с nginx • Nginx+apache? Убедиться в том, что стоит оптимальное количество worker • Только apache? Поставить nginx. • PHP-FPM? Проверить лимиты max_children #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 6. Настройки – Производительность – Сервер БД #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Шаг 7. Дополнительные настройки бд • Какова версия My. SQL? Минимум 5. 1 идеально >=5. 5 • Таблицы – обязательно Inno. DB • innodb_file_per_table должен быть включен. • innodb-flush-log-at-trx-commit выставить в 2 • Сервер под нагрузкой? Если да - Посчитать рекомендуемый innodb_log_size (http: //www. percona. com/blog/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/) #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Первичный анализ. Bonus-track • Убедиться в том, что создание бэкапов работает • Убедиться в том, что бэкапы создаются на внешний сервер • Убедиться в том, что из бэкапов можно восстановиться • Убедиться в том, что на сервере есть RAID контроллер • Убедиться в том, что массив не RAID-0 • Убедиться в том, что массив не находиться в аварийном состоянии #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Мониторинг в течении 24 -48 часов • Время ответа страниц сайта • Число запросов в секунду на веб-сервер • Нагрузка на процессор/Load Average • Нагрузка на дисковую подсистему • Работа web-сервера • Работа My. SQL #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 1. Периодическая нагрузка создаваемая кроном или агентами Проблема: «Сайт иногда работает очень медленно» . #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 1. Периодическая нагрузка создаваемая кроном или агентами Число запросов при этом не растет. #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 1. Периодическая нагрузка создаваемая кроном или агентами Причина: бэкап в кроне, создающий высокую нагрузку на диск #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 2. Скорость на сетевом интерфейсе упирается в «потолок» Новостной сайт. Проблема: резко замедляется скорость сайта при выходе новости. #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 2. Скорость на сетевом интерфейсе упирается в «потолок» Причина: пропускная способность заканчивается при регулярном выходе новостей #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 3. Хост-машина забирает ресурсы Проблема: неожиданно начинает тормозить весь сервер #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 3. Хост-машина забирает ресурсы Причина: виртуальный сервер с «прожорливыми соседями» #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Симптомы проблем в коде Время ответа увеличилось в момент выкладки кода и осталось неизменным #bitrixconf 2015
Партнерская конференция 2015 Аудит инфраструктуры Симптомы проблем в коде Время ответа в целом очень большое #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Методика проведения • Первичный анализ монитор производительности на боевом сервере • Изоляция проекта на «стенде» Позволит провести анализ кода в ненагруженной экосистеме • Постраничный поиск «долгих» компонентов + исследование кода Детальный анализ самых медленных страниц #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Первичный анализ – монитор производительности на боевом сервере • Цель: понять как работает сайт для большого числа пользователей • Какие страницы/компоненты создают суммарно наибольшую нагрузку на сервер • Что можно оптимизировать в первую очередь, а что – впоследствии? #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Первичный анализ – монитор производительности на боевом сервере • Убеждаемся что нет внешних причин для «тормозов» • Настройки – Настройки продукта – Настройки модулей – Монитор производительности • Вести журнал SQL запросов • Сохранять стек вызова SQL запросов #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Монитор производительности - страницы Позволяет найти: • Страницы которые создают максимальную нагрузку на процессор (если оптимизировать – нагрузка на сервер будет меньше) • Страницы которые дольше всего грузятся пользователю ( «скорость сайта» выше) #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Монитор производительности - страницы Как включить: • Фильтр – «+» - административный раздел «нет» • Для скорости загрузки страницы: страницавремя (среднее) • Для снижения нагрузки на процессор страница-время (сумма) #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Монитор производительности - компоненты Позволяет найти: • Самые «тяжелые» компоненты • Посмотреть самые тяжелые запросы в них (перейдя по клику на число запросов) • Найти откуда запрос вызывается (в разделе «SQL запросы» ) #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Монитор производительности – SQL запросы Позволяет найти: • Самые «тяжелые» запросы • Компоненты, откуда они вызваны • Непосредственное место вызова в компонентах • План выполнения запросов #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Монитор производительности – SQL запросы Наведение мыши на SQL-запрос при включенной в настройках Монитора записи стэка вызовов покажет стектрейс вызова SQL запроса (места в компоненте, откуда он вызывается) #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Изоляция кода на стенде Цель: проверить работу кода на ненагруженной инфраструктуре • Отдельная виртуальная машина 1 С-Битрикс • Опционально: X-Windows с удобным редактором кода • Опционально: Установленный XHProf для профилирования PHP #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Изоляция кода на стенде • Rsync директории c 1 С-Битрикс (и исключением кэша, картинок и других больших файлов) • Перенос БД • До открытия сайта: переведение агентов на крон SQL-запросом • Ссылка на виртуальную машину (подробные инструкции и больше материалов – позже) www. itsumma. ru/bitrixtools #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Постраничный поиск долгих компонентов Инструменты отладки • Позволяет легко проанализировать эффективность кэша • Позволяют проанализировать структуру выполнения компонентов на странице по времени #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Постраничный поиск долгих компонентов Поиск неработающего кэша • Обходим все основные страницы • Сбрасываем кэш, но не отключаем его в инструментах отладки • Если кэш работает эффективно – время работы страницы должно быть в приемлемых значениях (как минимум <1. 0 с) и ниже «некэшированной версии» #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Постраничный поиск долгих компонентов Поиск долгих компонентов • Обходим все основные страницы • Отключаем кэш в инструментах отладки • Смотрим за структурой вызовов компонентов #bitrixconf 2015
Партнерская конференция 2015 Аудит кода Постраничный поиск долгих компонентов Поиск долгих компонентов • Обходим все основные страницы • Отключаем кэш в инструментах отладки • Смотрим за структурой вызовов компонентов #bitrixconf 2015
Партнерская конференция 2015 Аудит кода XHProf Детальный аудит PHP-кода • Профилировщик от Facebook • https: //github. com/phacility/xhprof • Удобная процедура исследования кода • Стоит использовать для анализа кода, когда проблема не на стороне долгого обращения к базе данных #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 1 – проверяем сервер • Ставим сервер на мониторинг (24 -48 часов) • Ставим на мониторинг внешнее время ответа вебстраниц сайта • Смотрим все базовые настройки операционной системы • Смотрим не «развалился» ли RAID, работают ли бэкапы #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 2 – копируем проект на «стенд» • Rsync кода • Перенос БД • Выключение агентов #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 3 – включаем монитор производительности на боевом сервере • Вести журнал SQL вызовов • Сохранять стек вызова SQL запросов • Включить монитор на 30 минут • Удалить ранее собранные данные #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – на стенде проверяем работоспособность кэша • Отладка – Суммарная статистика • Отладка – Статистика SQL запросов • Отладка – Статистика включаемых областей • Отладка – Время исполнения страницы #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – выбираем часто используемые страницы (на глаз или по данным монитора производительности) • Главная • Специальные предложения • Каталог • Раздел каталога • Элемент каталога #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Главная • Выключаем кэш #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Главная • Выключаем кэш • Обновляем страницу, смотрим время исполнения #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Главная • Выключаем кэш • Обновляем страницу, смотрим время исполнения • Включаем кэш, обновляем страницу, смотрим время исполнения - работает #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Специальные предложения Время ответа обновленной страницы с кэшом не отличается от страницы без использования кэша – кэш не работает. #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Специальные предложения Время ответа обновленной страницы с кэшом не отличается от страницы без использования кэша – кэш не работает. #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша • Идем в раздел «время создания страницы» #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша • Идем в раздел «время создания страницы» • Смотрим структуру вызова компонентов и локализуем проблемный компонент #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша • Идем в раздел «время создания страницы» • Смотрим структуру вызова компонентов и локализуем проблемный компонент • Смотрим в шаблон/компонент и локализуем причину #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша • Идем в раздел «время создания страницы» • Смотрим структуру вызова компонентов и локализуем проблемный компонент • Смотрим в шаблон/компонент и локализуем причину #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша • Идем в раздел «время создания страницы» • Смотрим структуру вызова компонентов и локализуем проблемный компонент • Смотрим в шаблон/компонент и локализуем причину #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша • Идем в раздел «время создания страницы» • Смотрим структуру вызова компонентов и локализуем проблемный компонент • Смотрим в шаблон/компонент и локализуем причину #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 6 – анализируем результаты монитора производительности • Раздел «Страницы» • Суммарное время – нагрузка на сервер • Среднее время – скорость сайта • Имеет смысл оптимизировать главную страницу сайта и страницу каталога #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 6 – оптимизируем главную • Смотрим время вызова компонентов #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 6 – продолжаем анализ страниц • Смотрим время вызова компонентов • Локализуем место долгой загрузки #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 6 – продолжаем анализ страниц • Смотрим время вызова компонентов • Локализуем место долгой загрузки • Исследуем #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 7 – анализируем проблемы с php-кодом • Включаем XHProf • Идем по пути вызова функций #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 7 – анализируем проблемы с php-кодом • Включаем XHProf • Идем по пути вызова функций #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 7 – анализируем проблемы с php-кодом • Включаем XHProf • Идем по пути вызова функций #bitrixconf 2015
Партнерская конференция 2015 Пример аудита new. texenergo. ru Шаг 7 – анализируем проблемы с php-кодом • Включаем XHProf • Идем по пути вызова функций #bitrixconf 2015
Партнерская конференция 2015 Аудит new. texenergo. ru Итоги Простой аудит, продолжительность – 2 рабочих дня • Снижение времени ответа некэшированных страниц с 3 -5 секунд до 0. 5 секунд в среднем • Ускорение повторно загруженных страниц до 0. 25 секунд в среднем • Скорость сайта: быстро #bitrixconf 2015
Партнерская конференция 2015 Аудит new. texenergo. ru Пути развития процедуры аудита • Максимальная автоматизация – постобработка результатов сбора данных монитором производительности (акцент на долгих страницах, сводка по проблемным местам в коде) • Сводка по компонентам в которых не был использован кэш • База знаний по стандартным проблемам связанным с производительностью #bitrixconf 2015
Партнерская конференция 2015 Евгений Потапов Александр Лыженков • http: //itsumma. ru • http: //aeroidea. ru • eapotapov@itsumma. ru • lyzhenkov@aeroidea. ru • http: //facebook. com/eapotapov • http: //www. facebook. com/a. lyzhenkov http: //itsumma. ru/bitrixtools #bitrixconf 2015
2015 Битрикс - Аудит производительности изнутри. Как самому научиться следить за производительностью сайта.pptx