Содержание
-
Аудит производительности изнутри. Как самому научиться следить за производительностью сайта Евгений Потапов ITSummaАлександр Лыженков Aero Партнерская конференция «1С-Битрикс»
-
Евгений Потапов генеральный директор компании ITSumma Круглосуточное администрирование и техническая поддержка веб-сайтов На поддержке CarambaTV, Наше Радио, Aero, Бюро Пирогова, ПостНаука, Marketium, Travelata, AlterGeo, Invisible, VseMayki, AcademMedia 100 миллионов уникальных посетителей в сутки Штат – 50 человек Партнерская конференция 2015 #bitrixconf2015
-
Александр Лыженков технический директор компании Aero Creative Agency Специализируемся на создании, поддержке и развитии технологичных e-commerce проектов. Выводим крупнейшие ритейл-бренды в онлайн. Среди наших клиентов: «Евросеть», «Мегафон-Ритейл», ЦУМ, «ЦентрОбувь», «Технопарк», «Техносила», «АльфаСтрахование», СГ МСК, «1С», «Уральские авиалинии», YotaDevices, ForexClub. Постоянный штат – 20 человек Партнерская конференция 2015 #bitrixconf2015
-
Типичные проблемы поддержки Долгое время ответа веб-сайта. Критическое потребление ресурсов сервера (CPU, диски) Рост нагрузки при скачках посещаемости Проблемы при выкладке нового кода Проблемы с «железом» Партнерская конференция 2015 #bitrixconf2015
-
Содержание Когда пришло время делать аудит? Как проводить аудит? Какой есть инструментарий? Пример проведения аудита Партнерская конференция 2015 #bitrixconf2015
-
Когда нужно делать аудит? два «полюса» в разработке Сначала все сделаем и «зарелизим», а там – посмотрим Заранее спланировать код так, чтобы он был высокопроизводительным Партнерская конференция 2015 #bitrixconf2015
-
Партнерская конференция 2015 #bitrixconf2015 Сначала все сделаем…
-
Партнерская конференция 2015 #bitrixconf2015 …а там посмотрим
-
Партнерская конференция 2015 #bitrixconf2015 …А может детально проработать каждый момент?
-
«Быстро все сделаем» типичные проблемы Неоптимальный код на основе которого разработано много элементов сайта «Бомба замедленного действия» - неожиданное падение производительности в процессе эксплуатации Плавное увеличение времени ответа с каждой новой «фичей» Партнерская конференция 2015 #bitrixconf2015
-
Неоптимальный код на основе которого разработано много элементов сайта Партнерская конференция 2015 #bitrixconf2015 Разработанная функциональность используется для последующих доработок, и тогда, когда приходит необходимость оптимизации кода – код уже очень не просто изменить
-
Партнерская конференция 2015 #bitrixconf2015 «Бомба замедленного действия» Посещаемость выросла в 5 раз, а нагрузка на процессор – в 12
-
Партнерская конференция 2015 #bitrixconf2015 Время ответа незаметно увеличивается с каждой новой «фичей», пока не становится критическим
-
Как попытаться избежать проблем?Итеративный подход к аудиту Разрабатываем часть функциональности сайта Проводим аудит Дорабатываем самые «тормозные» моменты Разрабатываем дальше Проводим аудит Партнерская конференция 2015 #bitrixconf2015
-
Аудит производительности – это не так сложно. Состоит из: Аудита инфраструктуры(Аудит серверного ПО и «железа», мониторинг) Аудита кода(С использованием встроенного инструментария 1С-Битрикс) Аудита фронт-энда, скорость сайта(Анализ времени загрузки страницы) Партнерская конференция 2015 #bitrixconf2015
-
Аудит инфраструктуры Когда и как применять Цель – убедиться в том, что причина возможных проблем – не «экосистема» сервера Чаще всего – в боевой эксплуатации. Часть 1: первичный анализ сервера Часть 2: мониторинг в течении продолжительного времени Партнерская конференция 2015 #bitrixconf2015
-
Аудит инфраструктуры Что анализируем? Факторы влияющие на время ответа сайта Специфика настройки веб-сервера. Нагрузка на процессор Нагрузка на дисковую подсистему Проблемы с работой базы данных Проблемы с сетевыми интерфейсами Партнерская конференция 2015 #bitrixconf2015
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Какой хостинг использован?Hetzner/FastVPS? Надо срочно проверить SMART состояние дисков. Каково значение TTL в DNS?Оптимально
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Какова частота процессора? Сколько ядер? Если нужно быстро отдавать страницу пользователю – важна частота (>2.5 ггц)Если нужно отдавать сайт многим одновременным пользователям важно число ядер (как минимум >=4) Шаг 2. Анализ аппаратной конфигурации - Процессор
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Каков тип жестких дисков – SATA или SSD?Есть возможность поставить SSD? Если да – запланировать использование SSD для базы данных. Шаг 3. Анализ аппаратной конфигурации – Жесткие диски
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Шаг 4. Анализ ПО сервера. Инструменты – проверка системы
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Open files limit (https://rtcamp.com/tutorials/linux/increase-open-files-limit/) PHP – убедиться что есть opcache (apc/zendopcache) PHP – убедиться, что память опкэш-акселератора не заполнена Nginx+apache? Убедиться в том, что статика отдается с nginx Nginx+apache? Убедиться в том, что стоит оптимальное количество worker Только apache? Поставить nginx. PHP-FPM? Проверить лимиты max_children Шаг 5. Анализ настроек операционной системы и веб-части
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Шаг 6. Настройки – Производительность – Сервер БД
-
Аудит инфраструктуры Первичный анализ. Партнерская конференция 2015 #bitrixconf2015 Шаг 7. Дополнительные настройки бд Какова версия MySQL? Минимум 5.1 идеально >=5.5 Таблицы – обязательно InnoDB 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/)
-
Аудит инфраструктуры Первичный анализ. Bonus-track Партнерская конференция 2015 #bitrixconf2015 Убедиться в том, что создание бэкапов работает Убедиться в том, что бэкапы создаются на внешний сервер Убедиться в том, что из бэкапов можно восстановиться Убедиться в том, что на сервере есть RAID контроллер Убедиться в том, что массив не RAID-0 Убедиться в том, что массив не находиться в аварийном состоянии
-
Аудит инфраструктуры Мониторинг в течении 24-48 часов Партнерская конференция 2015 #bitrixconf2015 Время ответа страниц сайта Число запросов в секунду на веб-сервер Нагрузка на процессор/Load Average Нагрузка на дисковую подсистему Работа web-сервера Работа MySQL
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 1. Периодическая нагрузка создаваемая кроном или агентами Партнерская конференция 2015 #bitrixconf2015 Проблема: «Сайт иногда работает очень медленно».
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 1. Периодическая нагрузка создаваемая кроном или агентами Партнерская конференция 2015 #bitrixconf2015 Число запросов при этом не растет.
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 1. Периодическая нагрузка создаваемая кроном или агентами Партнерская конференция 2015 #bitrixconf2015 Причина: бэкап в кроне, создающий высокую нагрузку на диск
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 2. Скорость на сетевом интерфейсе упирается в «потолок» Партнерская конференция 2015 #bitrixconf2015 Новостной сайт. Проблема: резко замедляется скорость сайта при выходе новости.
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 2. Скорость на сетевом интерфейсе упирается в «потолок» Партнерская конференция 2015 #bitrixconf2015 Причина: пропускная способность заканчивается при регулярном выходе новостей
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 3. Хост-машина забирает ресурсы Партнерская конференция 2015 #bitrixconf2015 Проблема: неожиданно начинает тормозить весь сервер
-
Аудит инфраструктуры Типичные примеры «серверных проблем» – код не виноват 3. Хост-машина забирает ресурсы Партнерская конференция 2015 #bitrixconf2015 Причина: виртуальный сервер с «прожорливыми соседями»
-
Аудит инфраструктуры Симптомы проблем в коде Партнерская конференция 2015 #bitrixconf2015 Время ответа увеличилось в момент выкладки кода и осталось неизменным
-
Аудит инфраструктуры Симптомы проблем в коде Партнерская конференция 2015 #bitrixconf2015 Время ответа в целом очень большое
-
Аудит кода Методика проведения Первичный анализмонитор производительности на боевом сервере Изоляция проекта на «стенде»Позволит провести анализ кода в ненагруженной экосистеме Постраничный поиск «долгих» компонентов + исследование кодаДетальный анализ самых медленных страниц Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Первичный анализ – монитор производительности на боевом сервере Цель: понять как работает сайт для большого числа пользователей Какие страницы/компоненты создают суммарно наибольшую нагрузку на сервер Что можно оптимизировать в первую очередь, а что – впоследствии? Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Первичный анализ – монитор производительности на боевом сервере Убеждаемся что нет внешних причин для «тормозов» Настройки – Настройки продукта – Настройки модулей – Монитор производительности Вести журнал SQL запросов Сохранять стек вызова SQL запросов Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Монитор производительности - страницы Позволяет найти: Страницы которые создают максимальную нагрузку на процессор (если оптимизировать – нагрузка на сервер будет меньше) Страницы которые дольше всего грузятся пользователю («скорость сайта» выше) Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Монитор производительности - страницы Как включить: Фильтр – «+» - административный раздел «нет» Для скорости загрузки страницы: страница-время (среднее) Для снижения нагрузки на процессор страница-время (сумма) Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Монитор производительности - компоненты Позволяет найти: Самые «тяжелые» компоненты Посмотреть самые тяжелые запросы в них (перейдя по клику на число запросов) Найти откуда запрос вызывается (в разделе «SQL запросы») Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Монитор производительности – SQL запросы Позволяет найти: Самые «тяжелые» запросы Компоненты, откуда они вызваны Непосредственное место вызова в компонентах План выполнения запросов Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Монитор производительности – SQL запросы Наведение мыши на SQL-запрос при включенной в настройках Монитора записи стэка вызовов покажет стек-трейс вызова SQL запроса (места в компоненте, откуда он вызывается) Партнерская конференция 2015 #bitrixconf2015
-
Аудит кода Изоляция кода на стенде Партнерская конференция 2015 #bitrixconf2015 Цель: проверить работу кода на ненагруженной инфраструктуре Отдельная виртуальная машина 1С-Битрикс Опционально: X-Windows с удобным редактором кода Опционально: Установленный XHProfдля профилирования PHP
-
Аудит кода Изоляция кода на стенде Партнерская конференция 2015 #bitrixconf2015 Rsyncдиректории c 1С-Битрикс (и исключением кэша, картинок и других больших файлов) Перенос БД До открытия сайта: переведение агентов на крон SQL-запросом Ссылка на виртуальную машину (подробные инструкции и больше материалов – позже)www.itsumma.ru/bitrixtools
-
Аудит кода Постраничный поиск долгих компонентов Партнерская конференция 2015 #bitrixconf2015 Инструменты отладки Позволяет легко проанализировать эффективность кэша Позволяют проанализировать структуру выполнения компонентов на странице по времени
-
Аудит кода Постраничный поиск долгих компонентов Партнерская конференция 2015 #bitrixconf2015 Поиск неработающего кэша Обходим все основные страницы Сбрасываем кэш, но не отключаем его в инструментах отладки Если кэш работает эффективно – время работы страницы должно быть в приемлемых значениях (как минимум
-
Аудит кода Постраничный поиск долгих компонентов Партнерская конференция 2015 #bitrixconf2015 Поиск долгих компонентов Обходим все основные страницы Отключаем кэш в инструментах отладки Смотрим за структурой вызовов компонентов
-
Аудит кода Постраничный поиск долгих компонентов Партнерская конференция 2015 #bitrixconf2015 Поиск долгих компонентов Обходим все основные страницы Отключаем кэш в инструментах отладки Смотрим за структурой вызовов компонентов
-
Аудит кода XHProf Партнерская конференция 2015 #bitrixconf2015 Детальный аудит PHP-кода Профилировщик от Facebook https://github.com/phacility/xhprof Удобная процедура исследования кода Стоит использовать для анализа кода, когда проблема не на стороне долгого обращения к базе данных
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 1 – проверяем сервер Ставим сервер на мониторинг (24-48 часов) Ставим на мониторинг внешнее время ответа веб-страниц сайта Смотрим все базовые настройки операционной системы Смотрим не «развалился» ли RAID, работают ли бэкапы
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 2 – копируем проект на «стенд» Rsyncкода Перенос БД Выключение агентов
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 3 – включаем монитор производительности на боевом сервере Вести журнал SQL вызовов Сохранять стек вызова SQL запросов Включить монитор на 30 минут Удалить ранее собранные данные
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – на стенде проверяем работоспособность кэша Отладка – Суммарная статистика Отладка – Статистика SQL запросов Отладка – Статистика включаемых областей Отладка – Время исполнения страницы
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – выбираем часто используемые страницы (на глаз или по данным монитора производительности) Главная Специальные предложения Каталог Раздел каталога Элемент каталога
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Главная Выключаем кэш
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Главная Выключаем кэш Обновляем страницу, смотрим время исполнения
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Главная Выключаем кэш Обновляем страницу, смотрим время исполнения Включаем кэш, обновляем страницу, смотрим время исполнения - работает
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Специальные предложения Время ответа обновленной страницы с кэшом не отличается от страницы без использования кэша – кэш не работает.
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 4 – проверяем работоспособность кэша для каждой выбранной страницы – Специальные предложения Время ответа обновленной страницы с кэшом не отличается от страницы без использования кэша – кэш не работает.
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша Идем в раздел «время создания страницы»
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша Идем в раздел «время создания страницы» Смотрим структуру вызова компонентов и локализуем проблемный компонент
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша Идем в раздел «время создания страницы» Смотрим структуру вызова компонентов и локализуем проблемный компонент Смотрим в шаблон/компонент и локализуем причину
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша Идем в раздел «время создания страницы» Смотрим структуру вызова компонентов и локализуем проблемный компонент Смотрим в шаблон/компонент и локализуем причину
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша Идем в раздел «время создания страницы» Смотрим структуру вызова компонентов и локализуем проблемный компонент Смотрим в шаблон/компонент и локализуем причину
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 5 – для проблемных страниц анализируем причины неиспользования кэша Идем в раздел «время создания страницы» Смотрим структуру вызова компонентов и локализуем проблемный компонент Смотрим в шаблон/компонент и локализуем причину
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 6 – анализируем результаты монитора производительности Раздел «Страницы» Суммарное время – нагрузка на сервер Среднее время – скорость сайта Имеет смысл оптимизировать главную страницу сайта и страницу каталога
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 6 – оптимизируем главную Смотрим время вызова компонентов
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 6 – продолжаем анализ страниц Смотрим время вызова компонентов Локализуем место долгой загрузки
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 6 – продолжаем анализ страниц Смотрим время вызова компонентов Локализуем место долгой загрузки Исследуем
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 7 – анализируем проблемы с php-кодом Включаем XHProf Идем по пути вызова функций
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 7 – анализируем проблемы с php-кодом Включаем XHProf Идем по пути вызова функций
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 7 – анализируем проблемы с php-кодом Включаем XHProf Идем по пути вызова функций
-
Пример аудита new.texenergo.ru Партнерская конференция 2015 #bitrixconf2015 Шаг 7 – анализируем проблемы с php-кодом Включаем XHProf Идем по пути вызова функций
-
Аудит new.texenergo.ru Итоги Партнерская конференция 2015 #bitrixconf2015 Простой аудит, продолжительность – 2 рабочих дня Снижение времени ответа некэшированных страниц с 3-5 секунд до 0.5 секунд в среднем Ускорение повторно загруженных страниц до 0.25 секунд в среднем Скорость сайта: быстро
-
Аудит new.texenergo.ru Пути развития процедуры аудита Партнерская конференция 2015 #bitrixconf2015 Максимальная автоматизация – постобработка результатов сбора данных монитором производительности(акцент на долгих страницах, сводка по проблемным местам в коде) Сводка по компонентам в которых не был использован кэш База знаний по стандартным проблемам связанным с производительностью
-
Евгений Потапов http://itsumma.ru eapotapov@itsumma.ru http://facebook.com/eapotapovhttp://itsumma.ru/bitrixtools Партнерская конференция 2015 #bitrixconf2015 Александр Лыженков http://aeroidea.ru lyzhenkov@aeroidea.ru http://www.facebook.com/a.lyzhenkov
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.