Поддержка Проблемы и решения admin-ajax.php перегружает сервер

  • Доброго времени суток.

    Недавно на сейте аномально увеличилась нагрузка. После длительного и не очень плодотворного общения с техподдержкой хостинга определили, что много нагрузки идет от запросов типа:

    31.180.243.14 - - [17/Mar/2018:11:33:44 +0300] kmvexpress.ru POST /wp-admin/admin-ajax.php HTTP/1.1 200 102 "http://***/wp-admin/post-new.php"

    Техподдержка хостинга предложила отключить admin-ajax.php. Этот шаг имел смысл хотя бы для того, чтобы проверить на сколько данное действие снизит нагрузку.

    Однако, после всех необходимых процедур, подобные обращения остались. За день приходит от 5000 подобных запросов. Что, по словам поддержки, дает дополнительную нагрузку на сервер.

    Вот шаги, которые пробовали делать для отключения:

    1. В header.php добавлен следующий код:

    add_action( 'init', 'my_deregister_heartbeat', 1 ); 
    function my_deregister_heartbeat() 
    { 
    global $pagenow; 
    if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow ) 
    wp_deregister_script('heartbeat'); 
    } 

    2. В файл functions.php добавлен следующий код (дублирующий функции первого на случай, если вдруг он не отрабатывает):

    add_action( 'init', 'andreyex_stop_heartbeat', 1 ); 
    function andreyex_stop_heartbeat() 
    { 
    wp_deregister_script('heartbeat'); 
    }

    3. Был отключен плагин WP Ajaxify Comments, который так же имеет файл admin-ajax.php, позволяющий перезагружать комментарии без перезагрузки страницы. Время его работы на сайте было более 1 секунды.

    Может кто-то сталкивался с подобными проблемами и подскажет, в чем может быть проблема?

    • Тема изменена 6 лет назад пользователем SeVlad. Причина: Оформляйте, пож, код как следует
Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Yuri

    (@yube)

    admin-ajax.php используется для всех аяксных фишек как в админке, так и на фронтэнде. Также некоторые пейдж(де)билдеры любят его использовать где надо и где не надо.

    Автор altkmv

    (@altkmv)

    Это я понимаю. Понимаю так же, что любой плагин, в теории, может пользовать его по чем зря. И этот же файл является потенциальным уязвимым местом.

    Вопрос в другом: мои шаги 1 и 2 должны были отключить admin-ajax.php, однако этого не произошло. Или я не совсем правильно понимаю механику работы данных участков кода?

    Модератор Yui

    (@fierevere)

    永子

    3. Был отключен плагин WP Ajaxify Comments

    это должно было снизить количество запросов, вполне вероятно что другие действия и не понадобились бы

    Модератор Yuri

    (@yube)

    И этот же файл является потенциальным уязвимым местом.

    Любой файл является потенциально уязвимым местом. Этот ничем не лучше и не хуже других в плане уязвимости.

    мои шаги 1 и 2 должны были отключить admin-ajax.php

    С какой радости? И что Вы вообще подразумеваете под «отключить»?

    Автор altkmv

    (@altkmv)

    Инструкция по поиску виновного в пп 3-6.

    Так же в помощь https://ru.wordpress.org/plugins/query-monitor/

    К сожалению, не могу сейчас пробовать отключать все плагины на сайте и менять тему, так как проект с достаточно высоким онлайном для города.

    Query Monitor сейчас посмотрю, спасибо.

    это должно было снизить количество запросов, вполне вероятно что другие действия и не понадобились бы

    Я тоже так подумал после тестирования P3 Plugin Profiler. Однако высокая нагрузка сохранилась, что довольно странно.

    С какой радости? И что Вы вообще подразумеваете под «отключить»?

    Юрий, часто вижу Ваши комментарии во многих темах. И еще чаще они несут в себе мало полезной смысловой нагрузки. Вы выступаете в роли эксперта. Сюда обращаются люди с проблемными моментами. В данном сообществе они хотят найти помощь или хотя бы подсказки у более опытных «коллег по цеху». Для этого, собственно, и было создано сообщество.

    Отвечаю на Ваш вопрос в подобной Вам манере.

    Составляя слова в предложения я стараюсь руководствоваться смыслом данных слов. Другими словами, если я пишу «отключить», то имею ввиду «прервать работу» или же «исключить, удалить» (взято из вики словаря).

    На сколько я понимаю, сам admin-ajax.php продлевает пользовательские сессии. Если окно активно, то раз в 15 секунд, если окно не в фокусе, то раз в 60 секунд (как было написано в описании). Вы говорили выше, что здесь же используются «все аяксные фишки как в админке, так и на фронтэнде».

    Чтобы отключить функционал я использовал wp_deregister_script(), что удаляет ранее зарегистрированный скрипт. Использовал это в 2 местах на сайте, хотя один из дублей явно должен быть лишним. Однако, это не возымело должного эффекта.

    Когда более опытный разработчик вместо подсказки или помощи переходит к придиркам к словам, складывается общее впечатление о сообществе. Что не ведет к его (сообщества) процветанию и дзэну.

    Надеюсь на Ваше понимание.

    Модератор Yuri

    (@yube)

    Чтобы отключить функционал я использовал wp_deregister_script(), что удаляет ранее зарегистрированный скрипт.

    wp_deregister_script('heartbeat'); никоим образом может прервать работу вызываемого напрямую admin-ajax.php.

    Когда более опытный разработчик вместо подсказки или помощи переходит к придиркам к словам

    Мы тут общаемся словами. Для взаимопонимания необходимо чтобы все участники вкладывали в слова один и тот же смысл. И если Вы пишете «отключить скрипт», я хочу понять, что именно Вы хотите сделать.

    p.s. На понимание не надеюсь, но все-таки.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «admin-ajax.php перегружает сервер» закрыта для новых ответов.