MODX Revolution: Оптимизация PHP-процессов на хостинге.

Владислав Хорешко

Проблема:
Сайт на MODX Revolution работал с ошибками. Хостинг-провайдер зафиксировал превышение лимита PHP-процессов тарифного плана: 36 активных процессов при лимите 32. После принудительного завершения процессы автоматически восстанавливались до прежнего количества.

Диагностика:
Подключился по SSH к хостингу (ISPmanager). Получил данные для подключения к БД из конфига MODX (core/config/config.inc.php). Через SQL-запросы к БД проверил:

настройки кэша (modx_system_settings) - кэш включён, но покрытие низкое
количество опубликованных ресурсов - 2004 страницы при 171 файле кэша (покрытие менее 10%)
шаблоны с некэшируемыми вызовами ([[!...]])

Причина:
В трёх шаблонах сайта (основной, текстовый, сертификаты) сниппет getImageList был вызван с принудительным отключением кэша. При этом параметр docid был захардкожен - данные всегда статичные, независимо от страницы. Из-за одного некэшируемого вызова вся страница не сохранялась в кэш, и каждый визит генерировал страницу заново через PHP.

Решение:
Перед правками сделал резервную копию таблицы шаблонов. Убрал принудительное отключение кэша у трёх статичных вызовов getImageList через SQL UPDATE. Некэшируемые вызовы с реальной динамикой (msProducts с RAND(), AjaxForm, mFilter2) не трогал - они обоснованно некэшируемые.
После правок очистил core/cache/resource/ для принудительного прогрева кэша с новыми настройками.

Результат:
PHP-процессы снизились с 36 до 8 - в 4.5 раза. Сайт работает в рамках лимитов тарифного плана без ошибок.

Оценили проект:

0