Вопрос или проблема
Я не могу понять, почему admin-ajax.php заставляет мой сайт на WordPress зависать.
Сайт зависает при работе в административной панели после определенного количества редактирований. Admin-ajax.php просто остается в ожидании, пока не достигнет предела времени ожидания, а затем повторяет то же самое, пока я не закрою все вкладки, связанные с этим сайтом. Загрузка никогда не останавливается!
Нет журналов ошибок в WP или в хостинге.
Сайт НИКОГДА не отключается, я могу получить к нему доступ через другой браузер, мобильный и даже Chrome в режиме инкогнито. Просто я не могу получить доступ к любой странице сайта в одном и том же браузере, пока открыта вкладка, где загружается admin-ajax.php. Если я закрою каждую страницу и подожду пару минут, всё возвращается в норму, я могу открыть любую страницу в том же браузере, где произошел сбой.
Например, если я открываю список всех продуктов WooCommerce, функция WordPress heartbeat автоматически отправляет запросы admin-ajax, после нескольких запросов я открываю новую вкладку и работаю на сайте, и, например, иногда после нескольких минут работы, а иногда через 15 минут он зависает при редактировании меню или в кастомизере.
Установка WordPress свежая, установлена через Softaculous на общем хостинге. Тема Astra, с WooCommerce и плагином Loginizer. Никаких кастомизаций, даже нет дочерней темы.
Попробовал всё: изменить версию PHP, увеличить лимит времени ожидания PHP, отключить ModSecurity, новую установку плагинов, новую установку полного WP, другой браузер, плагины кэширования, отключение контроля heartbeat…
Такая же конфигурация на другом хостинге с тем же компьютером, и я не могу воспроизвести проблему.
Также иногда, когда он зависает, и я позволяю ему загрузиться в течение нескольких минут, он размораживается сам по себе. Посмотрите на скриншот:
Кто-нибудь сталкивался с аналогичной проблемой?
Как вы думаете, эта проблема связана с провайдером веб-хостинга?
Ответ или решение
Проблема с загрузкой admin-ajax.php в WordPress: вина хостинга или что-то иное?
При работе с WordPress, пользователи иногда сталкиваются с проблемой заморозки сайта, вызванной загрузкой файла admin-ajax.php
. В вашем случае, судя по описанию, проблема проявляется в том, что при выполнении определенных действий в админ-панели, admin-ajax.php
зависает в состоянии ожидания, что приводит к блокировке других вкладок и функций сайта. Давайте детально рассмотрим, возможно ли, что эту проблему вызывает ваш веб-хостинг.
Признаки проблемы
Из вашего описания можно выделить несколько ключевых аспектов:
- Зависание в админ-панели: Проблема возникает после выполнения нескольких действий. Это может указывать на ненадлежащую обработку AJAX-запросов.
- Периодические "разморозки": Иногда, если оставить страницу загруженной, она может восстановить функциональность. Это может говорить о том, что запросы все же обрабатываются, но с задержкой.
- Нет ошибок в логах: Отсутствие записей об ошибках может усложнить процесс отладки, но также и указывает на то, что сервер не завершает обработку запросов с фатальными ошибками.
- Работа на другом хостинге: Вы указали, что на другом хостинге с аналогичной настройкой проблема не появляется, что говорит о том, что, скорее всего, проблема связана с конфигурацией или производительностью вашего текущего хостинга.
Возможные причины проблемы
-
Ограниченные ресурсы хостинга: На shared hosting с низкими тарифами может быть нехватка серверных ресурсов, что вызывает высокую нагрузку и задержки в обработке запросов.
-
Настройки PHP: Параметры, такие как
max_execution_time
,memory_limit
и другие, могут быть слишком низкими, особенно если ваш сайт обрабатывает множество запросов AJAX. -
Фильтрация трафика: Некоторые провайдеры хостинга используют системы защиты (например, ModSecurity), которые могут блокировать определенные запросы или продолжать их обрабатывать дольше обычного, что может вызвать задержки.
-
Обработчик запросов сервера: В зависимости от конфигурации вашего веб-сервера (Nginx, Apache и т.д.), могут возникать задержки в обработке AJAX-запросов, особенно если имеются игровые конфигурации в
htaccess
, которые могли создать многоуровневую переадресацию.
Рекомендации по устранению проблемы
-
Обратитесь к поддержке хостинга: Ваш первый шаг должен стать обращением к службе поддержки вашего хостинга для проверки настройки сервера и наличия любых ограничений. Сообщите им о вашей проблеме и попросите об увеличении ресурсов или изменении конфигурации.
-
Оптимизация плагинов: Пробуйте отключить плагины один за другим, чтобы определить, не вызывает ли любой из них задержки в обработке AJAX-запросов. Обратите особое внимание на плагины, использующие
admin-ajax.php
. -
Пользовательские настройки PHP: Проверьте и оптимизируйте настройки PHP. Вы можете рассмотреть возможность увеличения значений, таких как
max_execution_time
иmemory_limit
. -
Использование кэширования: Если это еще не сделано, настройте кэширование для вашего сайта. Это может значительно снизить нагрузку на сервер.
-
Тестирование на других хостингах: Поскольку вы упомянули, что аналогичная конфигурация на другом хостинге работает нормально, вы можете рассмотреть возможность миграции вашего проекта на более производительный хостинг.
Заключение
Судя по всем представленным данным, проблема с admin-ajax.php
может быть вызвана ограничениями или проблемами на стороне веб-хостинга, поскольку вы не сталкиваетесь с аналогичными проблемами в другой среде. Рекомендуется тщательно исследовать настройки хостинга и произвести необходимые изменения, чтобы улучшить общую производительность вашего сайта.