Как исправить ошибку 429 «Слишком много запросов» в WordPress

Диагностика ошибки 429 в WordPress: что это и почему возникает?

Ошибка 429 «Too Many Requests» означает, что сервер считает, что клиент (браузер или скрипт) отправляет слишком много запросов за короткий промежуток времени. В контексте WordPress это часто происходит из-за:

  • агрессивных ботов или сканеров, вызывающих перегрузку;
  • частых AJAX-запросов из плагинов или темы;
  • неправильных настроек WP-Cron при большом количестве задач;
  • ограничений хостинга по лимитам запросов;
  • браузерных расширений или скриптов, перегружающих сайт.

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

Как проверить источник ошибки 429?

  1. Посмотрите логи сервера (обычно error_log или access_log) на предмет частых ответов 429 и IP-адресов, которые их вызывают.
  2. Отключите временно все плагины и проверьте, исчезла ли ошибка.
  3. Активируйте плагины по одному, чтобы выявить виновника.
  4. Проверьте WP-Cron — при большом количестве задач он может вызвать множество запросов.
  5. Используйте инструменты мониторинга трафика (например, Query Monitor) для анализа AJAX-запросов.

Пошаговое решение: как ограничить количество запросов и убрать ошибку 429

1. Ограничение WP-Cron вызовов с помощью реального cron

Если WP-Cron запускается при каждом визите, это нагружает сервер и может привести к ошибкам. Переводим WP-Cron на системный cron:

# В wp-config.php добавьте перед "/* That's all, stop editing! */" строку:<br>define('DISABLE_WP_CRON', true);

На сервере добавьте cron-задачу (пример для Linux):

*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Это вызовет WP-Cron каждые 5 минут вместо при каждом посещении.

2. Ограничение частоты AJAX-запросов через плагин или код

Если ошибка вызвана AJAX-запросами, добавьте лимит частоты на стороне сервера. Пример простого ограничения по IP и действию AJAX:

add_action('wp_ajax_my_action', 'my_ajax_handler');<br>add_action('wp_ajax_nopriv_my_action', 'my_ajax_handler');<br><br>function my_ajax_handler() {<br>    $ip = $_SERVER['REMOTE_ADDR'];<br>    $key = 'ajax_limit_' . md5($ip);<br>    $count = get_transient($key) ?: 0;<br>    if ($count > 10) {<br>        wp_send_json_error('Слишком много запросов, попробуйте позже.', 429);<br>        wp_die();<br>    }<br>    set_transient($key, $count + 1, 60); // 1 минута<br>    // Ваш код обработки AJAX<br>    wp_send_json_success('Данные обработаны');<br>    wp_die();<br>}

3. Использование плагина для защиты от перегрузок

Плагины вроде Clearfy Pro позволяют гибко ограничивать частоту запросов и блокировать подозрительные IP.

Проверка результата после внедрения

  • Мониторьте логи сервера и убедитесь, что ошибки 429 больше не появляются.
  • Проверьте сайт с помощью инструментов разработчика (вкладка Network) на отсутствие ответов 429.
  • Попросите коллег или пользователей повторить действия, вызывающие ошибку, чтобы убедиться в устранении.
  • Для WP-Cron проверьте, что задачи выполняются с нужной периодичностью, а нагрузка снизилась.

Частые ошибки при исправлении ошибки 429 и как их исправить

  • Неправильное отключение WP-Cron: забыли подключить системный cron, из-за чего задачи не выполняются — добавьте cron-задачу на сервер.
  • Слишком строгие лимиты в коде ограничения AJAX: блокируются легитимные запросы — настройте порог и время хранения transient.
  • Проблемы с кешированием: transient не сбрасываются из-за кеша — исключите transient из кеша или используйте объектный кеш.
  • Неучтённые AJAX-обработчики: ограничение добавлено только для одного действия, а другие вызывают нагрузку — расширьте ограничение на все проблемные AJAX-действия.
  • Неотслеживаемые внешние боты: они продолжают вызывать ошибку — добавьте правила в .htaccess или используйте firewall.

Практические советы по безопасности и производительности

  • Используйте сервисы защиты от DDoS и ботов (Cloudflare, Sucuri).
  • Настройте ограничение запросов на уровне веб-сервера (nginx, Apache).
  • Переход на системный cron уменьшает нагрузку и предотвращает ошибки.
  • Контролируйте частоту AJAX-запросов и оптимизируйте их логику.
  • Регулярно обновляйте WordPress и плагины для закрытия уязвимостей.

Сравнение вариантов решения ошибки 429 в WordPress

МетодПлюсыМинусыПример использования
Отключение WP-Cron + системный cronСнижает нагрузку, стабилизирует задачиТребует доступа к серверуdefine('DISABLE_WP_CRON', true); и системный cron
Ограничение AJAX-запросов через кодГибкий контроль, быстрое внедрениеНужно прописывать для каждого действияПример с set_transient() выше
Использование плагина Clearfy ProУдобство, дополнительные функции безопасностиПлатное решениеClearfy Pro
Как сделать свойства контакта в WordPress в Contact Form 7
22.11.2025
Как синхронизировать метаданные пользователей WordPress между сайтами
20.01.2026
Как синхронизировать задачи с помощью WP-Cron в WordPress
23.12.2025
Как сделать свойства пользователя в WordPress через пользовательские мета-поля
07.03.2026
Автоматическая синхронизация изображений WordPress между сайтами
24.02.2026