Снова про Bing Bot нагрузку и Crawl-delay

Владимир
На сайте с 10.07.2006
Offline
154
5879

Тема довольно избитая (раз, два, три , четыре...) но сегодня пришлось решать ребус заново, поэтому внесу свои 5 копеек.

Начало стандартное - Bing Bot начал вешать сервер в течение нескольких суток выпуливая в мой сайт в среднем по 10, иногда до 20 запросов в секунду. Сайт сложный, динамический, местами стал подтормаживать.

Начал разбираться. В robots.txt у меня стояло:

User-agent: *
Crawl-delay: 1

Читаю мануал от Бинга - там английским языком написано, что User-agent: * он понимает. Ладно, думаю, вдруг в мануале ошибка. Ставлю специальную секцию:

User-agent: msnbot
Crawl-delay: 5

Жду когда подхватит. Но ничего не меняется! По-прежнему лупит по десятке в секунду.

Банить бинг совсем жалко - пусть трафик с него небольшой (порядка 100 заходов в сутки), но не нулевой...

Смотрю логи, куда он заходит. Оказался следующий казус. У меня сайт разделён по региональному принципу на поддомены: msk.site.ru, spb.site.ru и т.д. Вероятнее всего бинг воспринимает Crawl-delay не для сайта в целом, а для каждого поддомена отдельно (это, кстати, соответствует стандартной интерпретации robots.txt, но другие поисковики ведут себя более интеллигентно, подобных проблем не создавая). Соответственно он может, выдерживая указанную задержку для каждого поддомена, тем не менее создавать нагрузку в несколько десятков запросов в секунду на весь сайт в целом. В моём случае региональных поддоменов около 2 тысяч, соответственно чтобы получить гарантированно не более 1 запроса в секунду нужен Crawl-delay 2000, что было бы не полезно для сайта.

Ставлю Crawl-delay 20. Через какое-то время поток запросов снижается до 3-4 запросов в секунду. При этом Бинг действительно почти всегда выдерживает паузу в 20 секунд для каждого домена. Почти, потому что запросы идут с нескольких IP-адресов, и если к одному домену идёт обращение с разных IP, то между собой они могут эту паузу и не выдержать (очевидно, очереди на разных серверах у Бинга не синхронизируются). Дальше увеличивать Crawl-delay не хотел, т.к. на сайте есть ключевые домены (московский, питерский и т.п.) которые желательно индексировать оперативно.

Так же ещё придумал вставлять такой код в начало страницы:

if(preg_match("/bingbot/i", $_SERVER['HTTP_USER_AGENT'])) sleep(15);

для задержки её отдачи Бингу (потом уже нашёл на форуме, что подобный способ уже предлагал seo_optimist. :) ), но поразмыслив понял, что по сути это тот же Crawl-delay только кривой.

В итоге решил отрегулировать Crawl-delay и сделать его разным для разных доменов. Для больших и важных сделать поменьше, для прочих побольше. Хотя это полностью сайт от Бинга не защищает, т.к. он всегда может решить одновременно заняться всеми доменами сразу и жёстко нагрузить сайт, но можно сбалансировать общую нагрузку так чтобы Бинг быстро обходил полезные части сайта и не часто интересовался прочими.

Кстати, судя по всему Гугл и Яндекс на эти грабли уже наступали и проблемы решили, т.к. запросы от них идут в соответствии с выставленным Crawl-delay так как если бы он действовал в рамках всего сайта.

nocomments
На сайте с 12.11.2009
Offline
176
#1
Tvolod:
if(preg_match("/bingbot/i", $_SERVER['HTTP_USER_AGENT'])) sleep(15);

Так бинг будет уверен, что сайт грузится очень медленно

Это счастливая рефка: {жать сюда} (http://bit.ly/WbMR4O) тому, кто по ней разместит больше всего статей, будет сопутствовать счастье всю его оставшуюся, длинную, обеспеченную жизнь.
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#2
if(preg_match("/bingbot/i", $_SERVER['HTTP_USER_AGENT'])) sleep(15);

:D так вы убьете свой сервер через пару минут. Т.к. будет висеть 100500 процессов, сжирая при этом память.

роботс пишется для каждого субдомена в отдельности.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
Робот Бендер
На сайте с 14.11.2014
Offline
48
#3

мне тоже кажется что задержкой вы уложите хост

Тебе что-то не нравится? Укуси мой блестящий металлический зад! (с)
Chessmaster
На сайте с 28.12.2006
Offline
257
#4

Попробуйте кабинет web-мастера BING там есть настройка индексации ботом. https://www.bing.com/webmaster/home/mysites

Просто сидишь и ждешь? Чуда не будет. Учись зарабатывать. Некоторые монеты вырастут в цене в 10 раз. Удачи! https://kriptovalyta.ru
Владимир
На сайте с 10.07.2006
Offline
154
#5
foxi:
:D так вы убьете свой сервер через пару минут. Т.к. будет висеть 100500 процессов, сжирая при этом память.

Я проверял в ходе экспериментов. Ничего подобного. Висит процессов, конечно, несколько больше, но поскольку бинг в общем случае не посылает новых запросов к домену (в моём случае к региональному поддомену) не дождавшись ответа на старые запросы, то сильного роста количества висящих процессов не происходит, а общее число запросов бинга в единицу времени уменьшается.

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

foxi:
роботс пишется для каждого субдомена в отдельности.

Да, я как раз об этом и пишу :)

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

Chessmaster:
Попробуйте кабинет web-мастера BING там есть настройка индексации ботом.

Да, я её пробовал отрегулировать. Но судя по всему она как и роботс действует только в рамках одного домена. А значит в моём случае (2000 региональных доменов) не применимо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий