Что я делаю с помощью ИИ · Часть 8
11 сайтов на одном сервере падали каждый день. Виноваты оказались роботы
Ко мне обратился один из старых клиентов с обычной жалобой: сайты то открываются, то выдают ошибку.
Первое, что я сделал, было самым простым. Зашёл в панель, нажал кнопку перезагрузки, подождал минуту. Сайты ожили.
А дальше захотелось разобраться глубже: почему это вообще происходит. Поставил задачу ИИ.
Диагноз: это не сбой, это хроника
Первое, что сделал ИИ, оказалось важнее всего остального. Он не стал гадать, а полез в журналы сервера и посчитал.
За сутки сервер отдал 124 217 ошибок. Не всплеск, не разовое падение: ровный поток по четыре-восемь тысяч в час, круглосуточно, включая ночь. Перезагрузка ничего не лечила, через семь минут после старта ошибки шли снова.
То есть моя кнопка была обезболивающим, а не лечением.
Кто клал сайты
Роботы. Только не поисковые, от которых бывает польза, а те, что просто ходят и качают: китайские поисковики, сборщики ссылок для сеошных сервисов, ещё десяток непонятных.
Механика простая. У старого форума есть тяжёлые страницы вроде списка участников с сортировками и постраничной навигацией. Адрес такой страницы каждый раз чуть отличается, потому что в него подставляется идентификатор сессии. Для робота это означает, что страница новая, и он идёт по бесконечному кругу.
Сервер обслуживал эту очередь, упирался в потолок одновременных обработчиков и переставал принимать новые соединения. Живой человек в этот момент видел ошибку.
Отягчающих обстоятельств было два:
- Ни на одном из 11 сайтов не было файла с правилами для роботов. Ботам никто никогда не говорил, куда ходить не надо.
- У сервера не было подкачки при 8 гигабайтах памяти. При всплеске система выбирала, кого убить, и дважды за лето убивала базу данных. После этого сайты не поднимались сами, требовалось вмешательство руками.
Что делали, по шагам
- Правила для роботов на все 11 сайтов. Закрыли тяжёлые страницы, которые людям не нужны: списки участников, внутренний поиск, служебные адреса.
- Заслон на входе. Правила боты читают лениво и не всегда исполняют, поэтому мусорные теперь получают отказ сразу, а нужные поисковики на тяжёлых страницах получают временный код «зайдите позже» вместо падения сервера. Временный, потому что постоянный отказ выкинул бы страницы из индекса.
- Подкачка на 4 гигабайта. Чтобы всплеск больше не заканчивался убитой базой.
- Пересчёт лимитов по факту. В настройках стояли значения из коробки: при полной загрузке сервер запросил бы памяти в несколько раз больше, чем у него есть. Замерили реальный расход одного процесса и поставили честные цифры.
- Разбор журналов. Они занимали 4,5 гигабайта, из них один лог старого форума рос по сорок мегабайт в сутки.
Всё это заняло один вечер.
Результат
| Показатель | До | После | |---|---|---| | Ошибок в сутки | 124 217 | 1 за двадцать минут | | Мусорных запросов отбито | 0 | 1 360 за двадцать минут | | Журналы | 4,5 ГБ | 943 МБ | | Память | всплески с убийством базы | 1 ГБ из 8, нагрузка 0,21 |
Тонкость, которую нельзя было упустить
Отбить всех роботов разом проще всего, это одна строчка в конфигурации. Только вместе с мусором тогда отсекаются и роботы нейросетей.
Это те самые сборщики, благодаря которым сайт попадает в ответы Алисы, ChatGPT и других нейропоисковиков. Я подробно писал о них в материале про нейроответы: сайт может быть в топе обычного поиска и при этом не существовать для нейросети.
Поэтому в заслоне для них специально оставлен проход. Мусор отсекаем, роботов нейросетей пропускаем. Такой трафик сейчас растёт, и терять его ради простоты настройки было бы дорого.
Следующая задача: обновить сайты
Когда сервер перестал падать, я поставил следующую задачу: обновить движки всех сайтов, их не трогали годами.
Вот на ней ИИ и споткнулся. Отчитался, что установленная версия свежая и обновлять нечего. Я знал, что вышла новее, и сказал проверить ещё раз. Он проверил по официальному источнику, нашёл свою ошибку и обновил все сайты, с бэкапом базы перед каждым и проверкой контрольных сумм после.
Ошибся он и во второй раз: при оценке старого форума насчитал проблемных мест в десять раз больше, чем есть, потому что искал по строке, которая случайно совпадает с частью другой команды.
Оба раза хватило одной фразы: перепроверь ещё раз. Оба раза он находил свою ошибку сам. Но произнести эту фразу должен человек: машина не догадается усомниться в собственном ответе.
Вывод
Раньше с такой историей звали системного администратора, платили ему помесячно и ждали несколько дней.
Прочитать миллион строк журнала, сопоставить записи между собой и найти закономерность это ровно та работа, которую ИИ делает за минуты. Диагноз, план правок и сами правки уложились в один вечер.
От меня потребовалось поставить задачу и не принимать ответы на веру.
Понравился разбор?
Внедряю ИИ в бизнес и разбираю рынок недвижимости на данных. Обсудим вашу задачу или проект?