К содержанию

Проблемы с modx.pro и документацией.

Последние недели сайт периодически отваливался по таймауту, иногда вместе с соседними проектами на том же сервере. Разобрался. Коротко: за сутки к modx.pro приходит 428 тысяч запросов при живой аудитории меньше тысячи человек в неделю. Расскажу, кто их делает и что с этим сделано.

Сколько нас на самом деле



Живых посетителей меньше тысячи в неделю. Всё остальное — роботы. Примерно четыре пятых трафика.

Кто ходит



В сентябре первое место занимал ClaudeBot: 226 тысяч запросов в сутки, из них 220 тысяч на /all. При двадцати пяти тысячах заметок это девять полных обходов ленты за день. Закрыл его в robots.txt, помогло.

К октябрю на его место пришли двое других:

  • Claude-SearchBot — 85 тысяч запросов, 77 тысяч из них на /users;
  • Reflectionbot — 40 тысяч, 32 тысячи на /users.
Вместе около трети суточного трафика.

Почему robots.txt их не поймал



Потому что Claude-SearchBot — это не ClaudeBot. Другой токен. Закрыв одного поимённо, я не закрыл никого больше.

Схема оказалась проигрышной в принципе: каждый новый обходчик приходит с полным доступом, а узнаём мы о нём по нагрузке. Поэтому логику перевернул — теперь тяжёлые листинги закрыты для всех по умолчанию, а доступ выдан поимённо Яндексу, Google и Bing.

И отдельная дыра в правиле



В старом файле стояло Disallow: /users/ — со слешем на конце. Такое правило закрывает /users/ivan, но не закрывает /users и /users?page=2: сопоставление идёт по префиксу пути, а путь здесь без слеша.

То есть список пользователей с пагинацией не был закрыт вообще ни для кого. Именно его оба робота и выгребали.

Почти половина трафика была мусором



Самая неожиданная находка. В логах нашлись запросы такого вида:

GET /comments?page=12&MODSESSID=deac0757594052bce6484cfeca71d779
Идентификатор сессии в адресе. Таких запросов за десять часов набралось 89 775 — 47% всего трафика, и 36 тысяч уникальных идентификаторов.

Сайт давно не отдаёт таких ссылок, проверил: в выдаваемом HTML их нет, use_only_cookies включён. Это исторический мусор в очередях роботов — когда-то такие адреса существовали, роботы их запомнили и продолжают долбить по своим спискам.

Каждый такой запрос доходил до PHP, собирал полную страницу и заводил новую сессию в базе. Теперь nginx отдаёт на них 301 на чистый адрес, не доводя до PHP.

Почему ложились все сайты сразу



Это выяснилось ещё в сентябре. Apache обслуживает посетителей ограниченным числом процессов — по одному на соединение, всего 150. Когда свободные кончаются, остальные ждут в очереди и в итоге получают таймаут.

Так вот, больше половины этих процессов простаивало. Браузер давно всё забрал и ушёл, а соединение продолжало держать процесс ещё пять секунд — вдруг попросит что-то ещё. Сократил ожидание до двух секунд, и занятость упала со 150 до 26.

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

Что сделано



  • KeepAliveTimeout с 5 секунд до 2;
  • robots.txt перевёрнут: закрыто по умолчанию, доступ поимённо;
  • /all, /users и /comments закрыты без слеша, чтобы покрыть и пагинацию;
  • адреса с MODSESSID отдают 301 из nginx, минуя PHP и базу;
  • на соседнем проекте заблокирована подсеть, дававшая 82% его трафика;
  • поставлен сборщик состояния сервера, чтобы ловить отказы в момент, а не после.

Что дальше



База настроена этом хорошо: попадание в буферный пул 99,9994%, временные таблицы на диск не выплёскиваются ни разу. Проблема не в ней, а в том, сколько её спрашивают.

Корень — страницы собираются заново на каждый запрос. Робот получает свежесобранную страницу с полусотней запросов к базе, хотя просит ровно то же, что просил час назад. Кэш для анонимных посетителей снял бы основную часть нагрузки независимо от того, кто и сколько ходит. Это следующая работа.

Если заметите, что что-то открывается не так или ломается — напишите в комментариях. Правок было много, и часть из них затрагивает все запросы к сайту.
Николай Савин
Николай Савин
20 октября 2026, 11:23
modx.pro
1 008
Реклама

Комментарии: 13

ВитОс
ВитОс Проверенный
20 октября 2026, 15:37
У меня после переезда сайт в основном открывается, только через vpn с сервера рф
    Николай Савин
    Николай Савин Администратор
    20 октября 2026, 22:02
    Есть подозрение что работает какая то проактивная защита у хостера, потому что даже при пустой нагрузке я наблюдаю недоступность сервера по 443 порту, при том что 80 порт вполне себе отвечает.
    Повешал мониторинг — если будет подтверждение, придется переезжать.
      ВитОс
      ВитОс Проверенный
      21 октября 2026, 01:10
      Я сейчас на selectel сижу норм работают. Были правда массовые сбои по доступности в начале года. Но сейчас норм
    Николай Савин
    Николай Савин Администратор
    21 октября 2026, 15:05
    Из последних новостей — сервер в идеальном порядке, позакрывал все обходы ботами, снял медленные запросы, снизил нагрузку в 4 раза. Но сайты все равно недоступны либо загружаются очень долго. Анализ показывает что проблема на линии. А конкретно на уровне TLS шифрования. Общение между клиентом и сервером на 443 порту просто молча обрывается. Такое впечатление, что какое то промежуточное устройство на маршруте пропускает установку соединения, но выборочно глушит сам обмен. Чье — это устройство, провайдера, магистрали или хостера предстоит разбираться.
      Алексей Шумаев
      Алексей Шумаев Проверенный
      22 октября 2026, 09:42
      Бегет? Вчера наткнулся: в браузере норм, GET через Postman — обрыв на ssl.
      Ответа поддержки по сути пока не получил.
      Wassi Wassinen
      Wassi Wassinen Проверенный
      23 октября 2026, 00:21
      Добрые люди пишут, что нужно понизить версию TLS до второй. И сразу всё заработает.
        Николай Савин
        Николай Савин Администратор
        23 октября 2026, 11:30
        Понизил, посмотрим что получится. Заодно нашел что проекты работали на протоколе HTTP/3 — тоже отключил в пользу старого доброго HTTP/2
          Wassi Wassinen
          Wassi Wassinen Проверенный
          23 октября 2026, 22:55
          Молодцы. Пока, вроде как, Modx.pro стабильно открывается. Без зависаний и тормозов. Наблюдаем. :)
      Ivan K.
      Ivan K. Эксперт
      22 октября 2026, 18:23
      на modx.pro — не всегда могу зайти, при этом уже давно. Что с квн что без.

      Может поставите внешний WAf? чтобы сразу срезать львиную долю ботов не напрягая сам сервер с сайтом. Если надо скину ссылку на такой, сам пользуюсь
        Николай Савин
        Николай Савин Администратор
        22 октября 2026, 21:51
        Я для кого пишу статью и комментарии оставляю? Вроде по-русски же написал, с ботами проблемы все закрыты. Есть внешняя блокировка IP вне нашего сервера, мы разбираемся
        Олег Захаров
        Олег Захаров Проверенный
        25 октября 2026, 17:38
        Тоже столкнулся с большой загрузкой ботами некоторых своих чатов. Активно грузят GPTBot. Закрыk сайты от него пока. Но вопрос — закрытие может негативно сказаться на продвижение в ИИ — GEO?
        Очень напрашивается какой-нибудь компонент для защиты от ботов или правильной настройки выдачи ответа им. GPTBot вообще можно отдавать упрощенные версии сайтов?
          Вячеслав Литвинов
          28 октября 2026, 12:56
          Вроде у OpenAI тоже разные боты GPTBot для обучения, а для поиска отдельный OAI-SearchBot. Так что можно закрыть первого и оставить второго, если важно попадать в ответы.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          13