Что такое ошибка 429 Too Many Requests?
Ошибка 429 Too Many Requests — это HTTP-статус, который сервер возвращает, когда клиент (браузер, API-клиент, бот) отправляет слишком много запросов за короткий промежуток времени. В контексте WordPress это означает, что сервер или система защиты сочла ваши действия подозрительными и временно заблокировала доступ.
Код 429 появился в спецификации HTTP/1.1 (RFC 6585) именно для того, чтобы отделить ситуации rate limiting от других ошибок. Раньше для этого использовали 503 Service Unavailable, что было некорректно.
Как выглядит ошибка 429
В браузере пользователь видит одно из следующих сообщений:
- 429 Too Many Requests
- «Слишком много запросов»
- «Вы выполняете слишком много действий. Попробуйте позже.»
- Белый экран с сообщением от плагина защиты (Wordfence, Sucuri, Limit Login Attempts)
- В админке WordPress: «Вы превысили лимит попыток входа. Повторите через 15 минут.»
Основные причины появления 429 в WordPress
1. Слишком много попыток входа в wp-admin
Самый частый сценарий. Плагины безопасности (Wordfence, iThemes Security, Limit Login Attempts Reloaded) блокируют IP после N неудачных попыток входа. Обычно лимит — 3–5 попыток.
Как проверить: если вы не можете зайти в админку, а браузер выдаёт 429 — скорее всего, проблема в этом. Проверьте настройки плагина безопасности через базу данных (таблица wp_options).
Решение:
// Временно отключить лимит попыток входа через wp-config.php
define('WP_ALLOW_REPAIR', true);
Но лучше зайти в phpMyAdmin и очистить опции соответствующего плагина:
DELETE FROM wp_options WHERE option_name LIKE '%limit_login%';
2. Агрессивное сканирование плагинами безопасности
Wordfence и аналоги имеют встроенные сканеры, которые проверяют файлы сайта. Если на сервере несколько сайтов или слабый хостинг, эти сканеры могут сами же вызвать 429 — сервер начинает блокировать собственные запросы.
Решение: В настройках Wordfence → «Сканирование» → увеличить интервал между сканированиями или отключить «Сканировать файлы в фоне».
3. DDoS-атака или бот-трафик
Если 429 видит НЕ админ, а обычные посетители — это может быть легитимный рост трафика, который серверный WAF (Cloudflare, Sucuri) принял за DDoS.
Решение:
— Проверьте Cloudflare Analytics → Security Events
— Если атаки нет, а Cloudflare блокирует — ослабьте настройки WAF в панели Cloudflare
— Для обычного роста трафика — включите Cloudflare APO (Automatic Platform Optimization) или кэширование страниц
4. Лимиты хостинга (нагрузка на CPU/MySQL)
Некоторые хосты (особенно дешёвые shared-хостинги) ограничивают количество запросов к базе данных или PHP-воркеров. При пиковой нагрузке хост может отдавать 429 вместо 503.
Как проверить: запросите у хостинга логи resource usage или посмотрите панель управления (cPanel → CPU & Concurrent Connection Usage).
Решение: Переход на более дорогой тариф или VPS. На shared-хостинге кэширование страниц (WP Rocket, Flying Press) критически важно.
5. Проблемы с REST API или внешними интеграциями
Если 429 появляется при работе REST API — например, при интеграции с WooCommerce, плагинами оплаты или внешними сервисами — значит, API-клиент превышает лимит запросов к внешнему сервису (платёжный шлюз, CRM, сервис email-рассылки).
Решение: Добавить задержки между запросами в коде интеграции и включить механизм retry with backoff:
function safe_api_call($url, $max_retries = 3) {
for ($i = 0; $i < $max_retries; $i++) {
$response = wp_remote_get($url);
$code = wp_remote_retrieve_response_code($response);
if ($code !== 429) return $response;
sleep(pow(2, $i)); // Exponential backoff: 1s, 2s, 4s
}
return new WP_Error('rate_limited', 'API временно недоступен');
}
Диагностика ошибки 429
Шаг 1. Определите источник блокировки
Проверьте заголовки ответа. Используйте инструменты разработчика браузера (F12 → Network):
Retry-After: 120
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
X-Wordfence: block
- Retry-After — сколько секунд ждать до следующей попытки
- X-Wordfence: block — блокировка Wordfence
- CF-* заголовки — блокировка Cloudflare
- Server: LiteSpeed — возможно, сработал LSCache rate limiter
Шаг 2. Проверьте IP адрес
На shared-хостинге ваш IP могут делить соседи-сайты. Если один сайт атакуют — 429 получите и вы на своём сайте.
Проверка: curl -I https://вашсайт.рф с разных IP (VPN, мобильный интернет).
Шаг 3. Исключите виновника из блокировки
В Wordfence: Wordfence → Blocking → Whitelist — добавьте свой IP.
В Cloudflare: Security → WAF → Tools — добавьте IP в Allowlist.
Как предотвратить 429
Для пользователей / администраторов
- Не обновляйте всё сразу. Обновляйте плагины по одному, с паузой в 1–2 минуты между обновлениями.
- Используйте Application Password для REST API — у них отдельные лимиты.
- Настройте кэширование — WP Rocket, Flying Press или LSCache снижают нагрузку на сервер в 10–50 раз.
- Включите Cloudflare — его WAF фильтрует ботов до того, как они достигнут вашего сервера.
Для разработчиков
// Пример правильной работы с wp_remote_get() — всегда проверяйте код ответа
add_action('init', function() {
if (wp_doing_ajax() && !wp_verify_nonce($_POST['_wpnonce'], 'my_action')) {
wp_die('429 Too Many Requests', '', ['response' => 429]);
}
});
Заключение
Ошибка 429 Too Many Requests — это не поломка, а защитная реакция сервера. Чаще всего она вызвана либо слишком частыми попытками входа, либо конкуренцией плагинов безопасности, либо DDoS-атакой. Диагностика сводится к трём шагам: определить источник блокировки (по заголовкам ответа), проверить IP, временно отключить подозрительный плагин или добавить IP в белый список.
Если ошибка повторяется регулярно на чистом сайте — это повод задуматься о смене хостинга: дешёвые shared-хостинги ставят жёсткие лимиты на количество PHP-воркеров и запросов к БД, и 429 — их стандартное «лекарство» от перегрузки.
