Основная страница админки загружается быстро, но контент, подгружаемый через AJAX (например, поставщики в товарах, отдельные вкладки и т.п.), загружается крайне медленно.
Каждый AJAX-запрос может ждать ответа от сервера до ~30 секунд, после чего отправляется следующий. В результате любые действия в админке превращаются в ожидание, пока выбранный вариант применится.
Проблема выглядит как серверное ожидание, а не как работа JS на клиенте.
Что уже пробовал:
сайт был на XAMPP (Apache),
переносил на другой Apache (lagoran),
пробовал запускать в WSL + XAMPP,
— прироста скорости нет.
Также пробовал поднимать старый бэкап проекта, сделанный в период, когда проблем не было — там наблюдается такое же медленное выполнение AJAX-запросов.
Поэтому предполагаю, что проблема не связана с кодом проекта или конкретными доработками.
Подскажите, пожалуйста:
в какую сторону копать в первую очередь,
какие настройки CS-Cart / PHP / MySQL могут вызывать такую задержку,
как уменьшить время ожидания AJAX-скриптов, чтобы админка работала быстрее.
В первую очередь поставьте лог медленных запросов в mysql, попросите поддержку поставить логирование от 10 секунд, потом от 5 и в целом будет ясно, что у вас тормозит.
такая же проблема началась и у меня сегодня утром, домашняя страница быстро грузится а вот другие жестко тупят, при нажатии на шестеренку секции или блока кидает в самый низ и тишина… спустя 20-30 сек открывается. Вчера было норм, пришло вот это, связанно ли с этим хз, возможно опять менеджер модулей тупит. Страница открывается быстро, но вот вкладка в браузере крутит и пока она не остановится ничего не реагирует.
Включал slow query log в MySQL (порог 10 сек, затем 5 сек) — в момент зависаний лог пуст, запросы туда не попадают.
При этом:
HTML-страницы отдаются быстро;
AJAX-запросы в админке ждут ответа 20–30 секунд;
после ответа выполнение сразу продолжается.
По ощущениям, это не медленные SQL-запросы, а ожидание / блокировка до начала выполнения PHP-кода.
Это наводит на мысль, что причина не в коде проекта и не в данных, а в особенностях локального окружения (PHP sessions, file locking, файловая система, Apache).
Буду благодарен за подсказки, какие именно настройки локального окружения CS-Cart и/или Apache чаще всего приводят к таким задержкам и с чего лучше начать проверку.
Попробовал открыть AJAX-URL напрямую в браузере — GET-запрос тоже грузится ~33 секунды.
Для исключения влияния логики CS-Cart создал простой mode в контроллере со следующим кодом:
Спойлер
echo “start\n”;
flush();
sleep(1);
echo “done\n”;
Сам код выполняется мгновенно (sleep = 1 сек), но ответ клиенту приходит только через ~33 секунды.
При этом:
HTML-страницы отдаются быстро;
при открытии карточки товара выполняется несколько AJAX GET-запросов подряд;
каждый из них ждёт ответа примерно те же ~33 секунды.
Из этого следует, что задержка возникает до выполнения PHP-кода, и проблема связана именно с обработкой GET-запросов (ожидание соединения / окружение), а не с SQL или логикой CS-Cart.
Буду благодарен за идеи, в каком направлении дальше копать (Apache / PHP-FPM / DNS / IPv6 / sessions).
Посмотрел модули AlexBranding — получил то же сообщение о блокировке лицензии, что и в указанной теме.
Мысль о влиянии блокировок РКН выглядит правдоподобно, однако хочу уточнить важный момент:
у меня локальная dev-копия проекта работает под Apache (WSL, Ubuntu) — и именно там наблюдаются стабильные зависания GET-запросов ~33 секунды; при этом рабочий сайт на удалённом сервере с Nginx — без каких-либо тормозов, админка и модули AB открываются мгновенно.
Это наводит на мысль, что проблема может быть не столько в самих блокировках, сколько в том, как Apache в локальном окружении обрабатывает сетевые таймауты / недоступные внешние хосты, в отличие от Nginx.
Буду благодарен за идеи, какие именно настройки Apache / PHP / сетевого стека (DNS, IPv6, proxy, resolver) могут позволить добиться поведения, близкого к Nginx, чтобы локальная среда не «висела» на таких запросах.
Поднять Nginx локально, к сожалению, не вариант — пробовал под WSL, получал нестабильную работу вплоть до BSOD.
Всё верно. В модуле ab__addons_manager
в файле /addons/ab__addons_manager/Tygh/ABAManager.php
есть функция exec_cmd
там курлом делается запрос к https://cs-cart.alexbranding.com/api2/
на проверку лицензий.
Там просто надо сделать “имитацию” корректного ответа и всё будет работать.