Бот яндекса очень грузит MySQL базу индексируя сайт. Как решить проблему ?

12
0x53
На сайте с 16.11.2007
Offline
31
6044

В общем переехал на днях на majordomo, на тариф Мастер+ и столкнулся с нагрузкой на mysql базу в почти 15%, а иногда и более 15%.

Как я выяснил проблему создаёт бот яши который уж очень сильно напрягает базу запросами страниц. Оптимизировать запросы мне кажется некуда... у большинства загружаемых ботом страниц при каждой загрузке происходит всего один запрос к базе (SELECT) страниц на сайте более 160 тысяч и бот их индексирует более чем активно.

Я не очень силён в оптимизации запросов к бд хоть и программирую уже не один год ;)

$result = dbquery("SELECT * FROM ".$db_prefix."news WHERE news_id='".$id."'");

При запросе нужны не все ячейки строки таблицы... поможет ли сильно изменение запроса чтобы вызывать только требуемые ячейки ? Их просто и так не много.

Можно как-то притормозить бота, оптимизировать выборку или таблицу?

Заработай на своём трафике (http://www.popuptraf.ru/?partner=15337) Инвайт: 10B7605384FE8186CC1B | j0o.ru (http://j0o.ru/1621/) - заработай на ссылочном трафике. Наличие сайта не обязательно! Рекомендую! ;)
S
На сайте с 28.10.2005
Offline
318
#1
0x53
На сайте с 16.11.2007
Offline
31
#2

Был я там, поставил 10 секунд задержку... а толку нет.

S
На сайте с 28.10.2005
Offline
318
#3

1. Бот не моментально тормозится

2. Ставьте еще больше

роботс покажите

0x53
На сайте с 16.11.2007
Offline
31
#4
semenov:
1. Бот не моментально тормозится
2. Ставьте еще больше

роботс покажите

Вот... robots.txt

User-agent: *
Crawl-delay: 10
Disallow:

User-agent: Yandex
Disallow:
Crawl-delay: 10
Host: имя.домен

Изменял я его сегодня утром.

S
На сайте с 28.10.2005
Offline
318
#5
0x53:
Изменял я его сегодня утром.


User-agent: *
Disallow:
Crawl-delay: 10

User-agent: Yandex
Disallow:
Crawl-delay: 10
Host: имя.домен

Завтро смотрите логи

B
На сайте с 23.10.2006
Offline
170
#6
0x53:

$result = dbquery("SELECT * FROM ".$db_prefix."news WHERE news_id='".$id."'");

надеюсь по полю news_id в базе индекс проставлен?

M2
На сайте с 01.08.2007
Offline
111
#7

0x53, у меня на следующий день бот стал кушать страницы по роботсу :)

0x53
На сайте с 16.11.2007
Offline
31
#8
bimcom:
надеюсь по полю news_id в базе индекс проставлен?

Нет, индекс не был установлен. Установил индекс, сейчас займусь прописыванием конкретных ячеек для выборки из бд.

После теста отпишусь.

0x53 добавил 20.02.2010 в 09:08

В общем поменял... вот как изменился график загрузки:

Начиная где-то с половины восьмого и далее... Ближе к вечеру выгружу скриншот за день. Ради эксперимента еще убрал ограничения на индексирование страниц сайта.

L
На сайте с 07.12.2007
Offline
351
#9
0x53:
у большинства загружаемых ботом страниц при каждой загрузке происходит всего один запрос к базе (SELECT) страниц на сайте более 160 тысяч и бот их индексирует более чем активно.

1. Включить поддержку кэширования на стороне клиента - корректно отдавать LastModified и обрабатывать запросы IfModofiedSince, отдавая "304 Not Modified" для неизменившихся страниц.

2. Сделать кэширование на стороне сервера - nginx сорее всего на поставить, но сделать кэш страниц в html и отдавать неизмененные страницы из кэша средствами php - возможно.

PS: Проверьте бота Яндекса по IP - возможно сайт парсят, используя ЮзерАгентов ботов Яндекса.

crucified
На сайте с 12.01.2006
Offline
103
#10
0x53:
Нет, индекс не был установлен.

Думаю проблема была в этом, так как нагрузка на базу очень сильная без индекса. Если полей более 10 000 - то запросы могут выполняться более чем за 10 секунд

12

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