Предлагаю вашему вниманию уникальный в своем роде модуль, который позволяет наиболее подробно выполнить анализ производительности сайта. В частности запросов в БД, модулей и и файлов шаблонов.
Описание
Мне порой приходится заниматься оптимизацией DLE. И как показывает практика, зачастую, больше всего времени уходит на то, чтобы выяснить где что включено, где не используется кеширование, какие установлены сторонние модули и многое другое.С помощью данного модуля можно с легкостью отследить тяжелые запросы в БД, медленные модули или файлы шаблона.
Кто-то может заметить, что это тот же Power-Log, однако это верно лишь отчасти, процентов на 30. Power-log позволяет лишь привлечь внимание, мол тут что-то не так. С помощью данного модуля можно посмотреть что конкретно не так было на медленной странице - будь это запрос в БД или просто медленный модуль.
Главная
Главная представляет собой общую ленту всех запросов с возможность фильтрации и сортировки имеющихся данных.
Как видно, каждое значение времени подсвечено определенным цветом.
зеленый - хороший показатель (до 50мс)
синий - приемлемый (50-200мс)
оранжевый - следует обратить внимание (200-700мс)
красный - нужно обратить внимание (700мс - 2сек)
фиолетовый - строго настоятельно рекомендуется предпринять меры (более 2сек)
синий - приемлемый (50-200мс)
оранжевый - следует обратить внимание (200-700мс)
красный - нужно обратить внимание (700мс - 2сек)
фиолетовый - строго настоятельно рекомендуется предпринять меры (более 2сек)
Как видно, у меня один запрос имеет фиолетовую окраску и в нем было выполнено 2к запросов в БД. По времени видно, что это как раз время выполнения штатного крона DLE. А количество запросов - это так же нормально, это обработка кеша счетчика просмотров.
Время конечно великовато, но это тестовый сайт и там запускается ряд моих модулей.
Подробности запроса
Данный раздел - это одно из основных достоинств и преимуществ данного модуля.
На этой странице отображается полная информация внутренней работы движка: общее время выполнения и время выполнения каждого файла.
В колонке "Таймер" - отображается время с момента запуска до момента записи события.
"Время" - если это php или tpl файл, то отображается время обработки этого модуля/шаблона.
В колонке "Тип" представлены 3 типа:
cp - (ControlPoint - контрольная точка), простой маркер, который записывает время когда и где он был вызван, объем использованной оперативной памяти и стек вызова (подробности на вкладке "Контрольные точки"). Для него не записывается время обработки, поскольку он ничего не замеряет, только записывает данные в тот момент когда и где он был вызван.
php - это PHP файл подключенный через {include в файле шаблона.
tpl - скомпилированный файл шаблона.
php - это PHP файл подключенный через {include в файле шаблона.
tpl - скомпилированный файл шаблона.
UPD v.1.2.0 - Добавлены новые типы шаблона, а именно LOAD, TAGS и COMPILE.
LOAD - Загрузка шаблона и обработка глобальных тегов.
TAGS - Финальная обработка тегов шаблона
COMPILE - Общее время с момента загрузки шаблона до компиляции или время между циклами (для shortstory, например)
TAGS - Финальная обработка тегов шаблона
COMPILE - Общее время с момента загрузки шаблона до компиляции или время между циклами (для shortstory, например)
В DLE 13+ некоторые строки cp будут дублироваться. Это не страшно, но неизбежно.
Примечание: По умолчанию, "контрольные точки" будут работать только на DLE 13 и старше.
Для более младших версий, при желании, их нужно будет прописывать вручную, но это не обязательно.
Есть возможность посмотреть все сделанные запросы в базу данных, а так же сколько времени занял каждый из них.
По умолчанию список отсортирован по очередности их выполнения, но можно отсортировать по времени обработки.
Так же есть возможность посмотреть стек вызова запроса. Это уже больше для специалистов будет нужно. Чтобы знать путь вызова, файл и номер строки. В моем случае этот запрос - это неизбежное зло, с которым в данный момент нет возможности справиться. Нужно предпринимать существенные шаги по переделке и оптимизации самого DLE.
Список файлов шаблонов и вообще всего, что связано с шаблоном. Будь то файлы шаблона или подключаемые php файлы внутри шаблона через {include file="..."}
Как видно, у меня проблема в шаблоне fullpage/video.tpl. А если обратить внимание на время выполнения, то видно что он совпадает с временем выполнения тяжелого запроса в БД. А моем случае это построение навигации в custom блоке.
Последняя вкладка "Контрольные точки" показывает информацию о том, когда был выполнен запуск этого маркера, объем использованной оперативной памяти на текущий момент времени и название маркера. В DLE 13+ создание маркеров автоматизировано и привязано к утилите управления плагинами.
Так же можно посмотреть "Подробности" маркера и узнать стек вызова для дальнейшего анализа и возможного принятия мер.
Статистика
В целом вся нужная информация написана в самом разделе (скриншоте), отдельно только хочу заметить, что это статистика только среди медленных запросов, время которых превышает 100мс. Быстрые запросы модуль не записывает, так задано у меня в настройках.
Аналитика БД
Второй, а возможно и первый по важности раздел, наряду со страницей "Подробности запроса".
Здесь анализируются и отображаются все наиболее медленные, частые и тяжелые запросы в базу данных.
По умолчанию запросы сортируются по общему, суммарному времени выполнения.
Обратите внимание на запросы обведенные в красную рамку.
У первых 2х запросов большое среднее время выполнения, поэтому следует обратить на них внимание и по возможности предпринять меры.
Но второй запрос выполнялся всего 19 раз, поэтому он не столь критичен, в отличии от первого.
У 3 и 4 запросов так же большое среднее время выполнения, однако количество их достаточно мало, поэтому это можно принять за кратковременный сбой. Но нужно будет периодически наблюдать.
Так же можно отсортировать по среднему времени выполнения.
Однако внимание стоит обратить только на те запросы, которые достаточно часто повторяются. Единичные запросы можно проигнорировать. Однако стоит учитывать, что они могут быть разными, но однотипными. Каждая ситуация уникальна и требует индивидуального подхода.
Кликнув по ссылке "Количество запросов" - можно перейти к Главной странице поиска с заданным фильтром поиска по запросу.
В данном случае видно, что данный запрос в БД - это блок custom, который выводит 14 фильмов из текущей категории. И выполняется он только на странице новости с плеером.
Аналитика TPL
Почти аналогично разделу аналитики БД, так же можно посмотреть, какие файлы шаблона медленнее всего.
Как показала практика, данный раздел порой так же может быть крайне полезным.
Данный раздел подтверждает сделанный мною вывод, что проблема в custom на странице с видео плеером.
Поскольку custom подключается через шаблон, то и время его выполнения идет в счет файла шаблона.
Так же стоит обратить внимание на файлы shortstory.tpl и relatednews.tpl. У них огромное количество компиляций, однако среднее время выполнения равно 0 (оно меньше чем 0.5мс), а следовательно тут можно ничего не делать.
Настройки
И заключительный раздел - это настройки модуля. Тут все подписано, поэтому отдельно описывать я думаю нет необходимости.
Однако хочу заметить один момент. Не смотря на автоматическую очистку старых записей, я настоятельно НЕ рекомендую использовать модуль на постоянной основе. Лучше включать его на пару дней для отладки и затем отключать. Иначе, при большой посещаемости, размер БД может неприятно удивить.
Для хранения одного url запроса потребуется примерно 180Кб памяти. И если у вас в сутки будет примерно 100тыс тяжелых запросов, то размер БД может занять примерно 15-20Гб.
Размер папок (добавлено в v.1.1)
В данном разделе отображается дерево всех папок сайта и их размер.
Папки отсортированы по их размеру.
Помимо основной информации так же отображается дополнительная - сколько файлов непосредственно в этой папке и каков их размер.
Системные требования
Для работы модуля требуется ionCube Loader v.10.2 и старше (для PHP 7.4 версия куба должна быть 10.4)Версия DLE: 10.1 - 17.1
Версия PHP: 7.1 - 8.2 (кроме 8.0)
Кодировка: UTF-8
Информация
Стоимость модуля 17wmzКоличество лицензий в комплекте: 1шт
Стоимость дополнительной лицензии: 10wmz
Купить модуль: shop.sandev.pro
Контакты
Telegram: @SandevSkype: sander8804
E-Mail: oleg.sandev@gmail.com
История изменеий
v.1.2.2 - 30.06.2024
[FIX] - Исправлена работа фильтра касательно преобразования значений `-to` в `[to]`
v.1.2.1 - 23.05.2024
[NEW] - Добавлена поддержка PHP 8.2
v.1.2.0 - 01.03.2023
[NEW] - Добавлена возможность более детального анализа шаблонов
[UPD] - Увеличена точность измерения времени и отображение в хронологии
[UPD] - В разделе "Размер папок", карта файлов сайта теперь открывается только после клика на кнопку
[FIX] - Исправлена работа выбора даты на DLE 15.3
[FIX] - Исправлена страница активации модуля на DLE 16.0
v.1.1.6 - 06.02.2023
[FIX] - Обновлена инструкция по установке для DLE 16.0
v.1.1.5 - 16.10.2022
[NEW] - Добавлена поддержка PHP 8.1
v.1.1.4 - 11.02.2022
[FIX] - Исправлен установщик для DLE 15.1
v.1.1.3 - 17.06.2021
[FIX] - Исправлен установщик для DLE 14.3
v.1.1.2 - 17.05.2021
[FIX] - Незначительно оптимизирован код, когда модуль отключен
v.1.1.1 - 07.05.2021
[NEW] - Добавлена возможность отключения логов: запросов в БД, шаблонов, контрольных точек
v.1.1 - 01.05.2021
[NEW] - Добавлен раздел с отображением размера папок сайта
v.1.0.1 - 21.04.2021
[FIX] - Исправлен установщик для DLE 14.2
С уважением,
Олег Александрович a.k.a. Sander