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

12
0x53
На сайте с 16.11.2007
Offline
31
#11
Ladycharm:
1. Включить поддержку кэширования на стороне клиента - корректно отдавать LastModified и обрабатывать запросы IfModofiedSince, отдавая "304 Not Modified" для неизменившихся страниц.

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

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

1. Вот с этим поэкспериментирую. Если есть варианты кода отпишите пожалуйста, а пока поспрашиваю у гугла. ;)

2. Над кешированием уже пару дней думаю как реализовать получше. Т.к. двиг полностью самописный и кеширование тоже надо будет самому реализовывать.

3. Айпи ботов:

Yandex(77.88.28.246), Google(66.249.65.87), Slurp(67.195.111.44), Aport(194.67.18.248)

Yandex недавно угомонился, теперь Aport усиленно грузит страницы. Все ограничения для ботов убраны.

Скрин за день:

Нагрузка сильно уменьшилась, но надо дальше работать в этом направлении.

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

Строк в таблице сейчас 185,473 и цифра постепенно растёт.

Заработай на своём трафике (http://www.popuptraf.ru/?partner=15337) Инвайт: 10B7605384FE8186CC1B | j0o.ru (http://j0o.ru/1621/) - заработай на ссылочном трафике. Наличие сайта не обязательно! Рекомендую! ;)
sabotage
На сайте с 14.02.2007
Offline
192
#12

1. сколько записей в таблице?

2. покажите структуру

0x53
На сайте с 16.11.2007
Offline
31
#13
sabotage:
1. сколько записей в таблице?
2. покажите структуру

1. Строк примерно 185,473 и постепенно становится больше.

2. Ячейки news_id и new_datestamp в int(11), а остальные в text... думаю varchar меньше будет напрягать... так ?

Я уже говорил что в MySQL плохо разбираюсь.

B
На сайте с 23.10.2006
Offline
170
#14
sabotage:
1. сколько записей в таблице?
2. покажите структуру

Думаю это не может оказывать значительного влияния т.к. со слов ТС - выборки только по ID новостей, разве колво записей, хотя оно не велико.

Скорее всего дополнительную нагрузку создают дополнительно выводимые новости - типа предпросмотра (вывод 10-20 таких новостей в 10-20 раз повышают кол-во запросов) или выборка новостей типа новости за этот-же день, т.к. datestamp не зря-же поле, кстати что это за поле? а то смущает что вы о нем отозвались

0x53:
Ячейки news_id и new_datestamp в int(11)

если вы не описались - то это не верно, нужно именно в свойствах поля в базе ставить что это timestamp, а не вручную в инт поле заносить дату, как полагаю ещё и в UNIX формате (ну а если всетаки дату туда нужно вручную вставлять, то выставить datetime).

Скиньте сайт - так можно будет более наглядно оценить логику вывода информации, а следовательно и тяжелые запросы определить.

PS.

У самого есть сайт, на котором 300 000 записей, так от ботов, по ночам, когда каждый из них делает по 5-10 запросов в секунду (иногда как яндекс с рамблером накинутся+ всякий левак - в итоге в среднем 15-20 запросов в секунду) так VPS (у которого лимит 900Мгц) грузится на 2-3% (время генерации страниц 0,02 сек)

0x53
На сайте с 16.11.2007
Offline
31
#15
bimcom:
Думаю это не может оказывать значительного влияния т.к. со слов ТС - выборки только по ID новостей, разве колво записей, хотя оно не велико.
Скорее всего дополнительную нагрузку создают дополнительно выводимые новости - типа предпросмотра (вывод 10-20 таких новостей в 10-20 раз повышают кол-во запросов) или выборка новостей типа новости за этот-же день, т.к. datestamp не зря-же поле, кстати что это за поле? а то смущает что вы о нем отозвались

если вы не описались - то это не верно, нужно именно в свойствах поля в базе ставить что это timestamp, а не вручную в инт поле заносить дату, как полагаю ещё и в UNIX формате (ну а если всетаки дату туда нужно вручную вставлять, то выставить datetime).
Скиньте сайт - так можно будет более наглядно оценить логику вывода информации, а следовательно и тяжелые запросы определить.
PS.
У самого есть сайт, на котором 300 000 записей, так от ботов, по ночам, когда каждый из них делает по 5-10 запросов в секунду (иногда как яндекс с рамблером накинутся+ всякий левак - в итоге в среднем 15-20 запросов в секунду) так VPS (у которого лимит 900Мгц) грузится на 2-3% (время генерации страниц 0,02 сек)

Отписал в ЛС

L
На сайте с 03.05.2006
Offline
171
#16

Оптимизировать запросы к базе данных.

вывод 10-20 таких новостей в 10-20 раз повышают кол-во запросов

это неправильно. вывод 10-20 новостей надо формировать в 1-2 запроса.

B
На сайте с 23.10.2006
Offline
170
#17
luxs:
Оптимизировать запросы к базе данных.

может это ещё рано делать :) - у человека даже индексов проставлено не было, нужно с начала базу оптимизировать

luxs:

это неправильно. вывод 10-20 новостей надо формировать в 1-2 запроса.

а никто и не писал что 10-20 новостей нужно цеплять отдельными запросами.

0x53:
Отписал в ЛС

Вы хоть в следующий раз когда пишите - напоминайте по какой теме :) - а то еслибы ваш ник не запомнил - и не сообразил о чем вы - то принял бы за спам :)

посмотрел сайт там тяжелые запросы просто не могут быть, а всплески нагрузки связаны скорее всего:

1. карта сайта генерируется динамически - настройте кэш или отдавайте статикой.

2. просто много всяких сортировок - и по категориям и по страницам - проверьте наличие индекса на категориях.

3. если все выше указанное не поможет - только кэширование, ну или дотошное изучение запросов и их оптимизация.

Jaf4
На сайте с 03.08.2009
Offline
804
#18
0x53:
Был я там, поставил 10 секунд задержку... а толку нет.

/ru/forum/277383

Зы что за движок? Может стоит кэшировать?

New! NVMe VPS от SmartApe.ru (https://goo.gl/eoYYkS)
0x53
На сайте с 16.11.2007
Offline
31
#19
bimcom:
Вы хоть в следующий раз когда пишите - напоминайте по какой теме :) - а то еслибы ваш ник не запомнил - и не сообразил о чем вы - то принял бы за спам :)

посмотрел сайт там тяжелые запросы просто не могут быть, а всплески нагрузки связаны скорее всего:
1. карта сайта генерируется динамически - настройте кэш или отдавайте статикой.
2. просто много всяких сортировок - и по категориям и по страницам - проверьте наличие индекса на категориях.
3. если все выше указанное не поможет - только кэширование, ну или дотошное изучение запросов и их оптимизация.

Спасибо что посмотрели.

1. Я в общем-то уже и сам выяснил какие конкретно скрипты создают большую нагрузку. Это именно динамическая карта сайта и вывод многостраничного списка последних просмотренных видео.

2. Индексы уже во всех выборках проставлены.

3. Думаю стоит добавить кеширование, но ведь двиг полностью самописный... потому и кеширование надо будет самому прикручивать. Вот всё не могу разобраться как лучше отдавать заголовки и сохранять кеш. Кеш страниц наверно просто в текстовые файлы в отдельную папку, а вот заголовки это уже сложнее... я о заголовке 304 для поисковых ботов.

Jaf4:
/ru/forum/277383
Зы что за движок? Может стоит кэшировать?

Двиг полностью самописный. Про кеширование написано чуть выше.

12

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