Перейти к содержимому


Фотография

Как убрать нагрузку на сервер?

Форумы IBResource

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 126
dian@
  • Участники
  • Cообщений: 12

Отправлено

Добрый день. Столкнулась с такой проблемой:
имеем 2 одинаковых форума, одному уже 3 года исполнится. Больше года гнездимся на одном хостинге, к работе которого претензий не имеем, цены тоже приемлемы. В один прекрасный момент получаем письмо от хостера, про увеличенную нагрузку на CPU сервера от одного из форумов. И через определенный период нам закрывают аккаунт. После некоторой переписки сайт заработал, но по адресу, где расположен форум зайти нельзя, выдает ошибку 403.

Вот что пишет сам хостер:
У вас сдесь сессия передается не через кукис, а прямо в строке запроса,
потому поисковики бегают по этому форуму кругами дико расходуя ресурсы.

Если форум вам не нужен - впишите в его .htaccess
deny from all

короче вам нужно чтобы в ссылках на форуме
индекс.пхп?s= 7 8 2 4 6 2 6 6 b 4 8 d 1 5 6 f 0 2 7 6 2 2 e 0 5 2 b 0 2 9 8 ashowforum=2
пропало это самое
s=78246266b48d156f027622e052b0298a


(форум нам нужен, вообщето)
Как это решить? Внятного ответа от техподдержки я не получила, ответ был достаточно жесток, мол, они не будут помогать в том, чтоб помочь нам платить хостеру меньше. И порекомендовали перейти на тариф выше. Я бы и перешла, только считаю, что работа форума с такой нагрузкой ненормальна.

Спасибо заранее.

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

Насколько я помню, распознанные боты получают линки без идентификатора сессии в строке.
Так ли Вам нужны нераспознанные боты, большинство из которых банально тырят контент в поисках мейлов, или в поисках номеров аськи для спама, или разрывая контент на списки ключей под наливку дорвеев? Лично у меня такие боты отлавливаются по айпишнику и закрываются через эйчтиакцесс.

Кстати, у себя подумываю забанить и yahoo на пару с нигмой: целевых посетителей от них нет, а сканят они неприлично много и назойливо.

dian@
  • Участники
  • Cообщений: 12

Отправлено

где-то слышала, что это можно решить изменением кода скриптов в самом форуме. забыла указать, у нас стоит 2.3.5., без модов. только стоит бесплатный скин от ipskins - IPB Romantic Style 2.3.x. и почему-то нагрузка на сервер началась именно месяц тому. это и странно. то ли это после установки скина, или в результате взлома (нас взламывали) - не знаю.

в любом случае, согласно статистике видим, что половину посещений было с 2-х адресов:

83.149.71.137
66.249.67.60 (crawl-66-249-67-60.googlebot.com)

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

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

83.149.71.137

Знаю такого, не самый злобный.
62.1.110.245
85.17.231.74
95.211.17.45
Вот когда эти придут - тогда увидите, какие бывают нагрузки на самом деле. :D

dian@
  • Участники
  • Cообщений: 12

Отправлено

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

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

лучше подправить в коде, и пусть поисковые боты посещают: они в общем не должны мешать работе, в чем-то даже помогут.

Я дал айпишники не поисковых ботов, а самых злобных парсеров, выявленных на моих серврерах за последние 10 дней.

ОК, держите простенькую заплатку:
sources\classes\class_session.php
Найти:
function update_guest_session()
	{
и добавить ниже:
if(($this->time_now - $this->last_click) < 5)$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'server_too_busy', 'INIT' => 1 ) );
Вместо цифры "5" можно попробовать другие цифры. Чем больше цифра, тем меньше нагрузка на сервер, но тем больше гостей будет получать предупреждение при быстром листании страниц:

Сервер не может в данное время выполнить ваш запрос. Попробуйте позже.


Зарегистрированных пользователей и известных поисковых ботов этот мод не затронет.

Сообщение отредактировал FatCat: 23 Май 2009 - 17:20


dian@
  • Участники
  • Cообщений: 12

Отправлено

отлично! огромное спасибо!!! сегодня же и попробую.

так получается, что 83.149.71.137 - это не поисковик, а парсер? я почему-то думала, что это поисковый бот.

кстати, что-то подобное я нашла в этой теме:
http://forums.ibreso...showtopic=57806

как вы думаете, стоит поиграться с куки? или в случае с автором поста это актуально только для локальной машины? или что делать, что-бы настроить на сервере?

4apai
  • Клиенты
  • Cообщений: 11

Отправлено

FatCat, СПАСИБО. Я искал что-то подобное уже пару недель, а оказалось всё просто и здорово.

diana, я тоже периодически мучаюсь с перегрузкой. То, что из-за идентификатора сессий пауки бегают по кругу - полная ерунда, не слушайте хостера. По крайней мере Яндекс+Гугль+Рамблер понимают id сессии в адресе. Посмотрите на кеш поисковика - вы не найдёте в адресе s=12345...
Могу посоветовать вам прописать в robot.txt после User-agent: * директиву Crawl-delay: 10 и закрыть все служебные страницы от индексации. Например так, как это сделано вот тут. Не идеал, конечно, но для понимания смысла подойдёт.

Сообщение отредактировал 4apai: 23 Май 2009 - 18:41


FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

получается, что 83.149.71.137 - это не поисковик, а парсер? я почему-то думала, что это поисковый бот.

http://www.google.co...q=83.149.71.137



кстати, что-то подобное я нашла в этой теме:
http://forums.ibreso...showtopic=57806

как вы думаете, стоит поиграться с куки? или в случае с автором поста это актуально только для локальной машины? или что делать, что-бы настроить на сервере?

Это не касается поисковых ботов, в функции update_bot_session в качестве идентификатора сессии используется юзерагент.



То, что из-за идентификатора сессий пауки бегают по кругу - полная ерунда, не слушайте хостера. По крайней мере Яндекс+Гугль+Рамблер понимают id сессии в адресе.

Ни фига они не понимают, и эти проблемы есть на других движках, например на phpBB2.
На IPB эта проблема решена именно на уровне движка форума, решена как я сказал выше: через идентификатор по юзерагенту.
Ради интереса загляните как-нибудь через пхпмайадмин в таблицу сессий и посмотрите какие айдишники у гостей и у юзеров, и какие айдишники у поисковых ботов.

dian@
  • Участники
  • Cообщений: 12

Отправлено

спасибо, ребята :D
а каким должен быть текст эйчтиакцесс, чтоб блокировать этих негодников? к примеру, нужно заблокировать этого 83.149.71.137.
и куда этот файлик разместить?

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

По моим серверам: http://coda.su/htaccess.txt
Сейчас перестраиваю сервисы, поэтому есть вероятность попадания в этот список человеческих айпишников. Но на 99,99% вероятность, что айпишник либо личботовский, либо спамботовский, либо проксишный, засиженный всякими уродами.

dian@
  • Участники
  • Cообщений: 12

Отправлено

По моим серверам: http://coda.su/htaccess.txt
Сейчас перестраиваю сервисы, поэтому есть вероятность попадания в этот список человеческих айпишников. Но на 99,99% вероятность, что айпишник либо личботовский, либо спамботовский, либо проксишный, засиженный всякими уродами.

спасибо, проанализирую.

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

P.S. этот список впечатлил!

и еще одно: разве этот файлик не должен называться .htaccess? с текстового файла он тоже работает?

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

этот список впечатлил!

Это за 10 дней. Посмотрите через месяц - практически все айпишники сменятся. Но общее количество по трем серверам постоянно колеблется от 1 до 2 тысяч.


разве этот файлик не должен называться .htaccess? с текстового файла он тоже работает?

Именно так он и должен называться. Но если я его так назову, его не покажет через интернет. Поэтому сделал вывод в файл .txt. :D

Док
  • Участники
  • Cообщений: 1 212
  • http://www.remrai.ru/
  • Город:Москва
  • Интересы:Занимаюсь автомобилями,создал форум http://www.remrai.ru по Авто помощи и консультации.

Отправлено

FatCat, так чтобы его к себе положить и он работал нужно убрать .txt ?

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

чтобы его к себе положить и он работал нужно убрать .txt ?

Нужно копипастнуть весь текст в свой файл .htaccess

Док
  • Участники
  • Cообщений: 1 212
  • http://www.remrai.ru/
  • Город:Москва
  • Интересы:Занимаюсь автомобилями,создал форум http://www.remrai.ru по Авто помощи и консультации.

Отправлено

А если у меня нет такого файла ?
Можно просто создать текстовый фаил и вставить все туда, а потом удалить .txt ?

FatCat
  • Клиенты
  • Cообщений: 3 351
  • http://pharm-forum.ru
  • Город:נצרת עילית

Отправлено

Можно. Только обратить внимание, что файл без имени. Сначала точка, за ней расширение htaccess.

Док
  • Участники
  • Cообщений: 1 212
  • http://www.remrai.ru/
  • Город:Москва
  • Интересы:Занимаюсь автомобилями,создал форум http://www.remrai.ru по Авто помощи и консультации.

Отправлено

Понял спасибо
А в конце файла тоже точку ставить, как здесь: htaccess.

4apai
  • Клиенты
  • Cообщений: 11

Отправлено

Поскольку проблема для меня очень актуальна, а чёткой нормально структурированной информации я не нашёл, предлагаю составить небольшую инструкцию по снижению нагрузки на сервер, при использовании форума IPB. Эти способы можно использовать в качестве профилактических, даже если у вас нет данной проблемы. Все эти методы нужно применять в комплексе с общей оптимизацией форума (кеширование, оптимизация скриптов, модов)
Причина:
Большое количество одновременных попыток коннекта.
Обычно - агрессивное поведение поисковых ботов, парсеров, прочих роботов (не учитываем возможность DDoS, это другая тема). Реже - количество реальных пользователей превышает ресурсы хостинга. Со вторым можно справиться только увеличив ресурсы хостинга. Ну а с первым можно и нужно бороться.
Признаки: "Торможение" форума в моменты активного посещения, вплоть до полной неработоспособности. Сервер просто не успевает обработать все запросы, поэтому обычно превышает лимит памяти.
Способ устранения:
Снижаем активность полезных поисковых ботов, убиваем вредных. Посмотреть активность паука Гугля и снизить его активность можно в панели вебмастера тут (если пользуетесь). Для всех остальных - прописав в robots.txt директиву Crawl-delay: 10 , где 10 - это пауза между коннектами в секундах (подробно о директивах в robots.txt читаем тут). Как вариант - оставить для пауков открытой в роботс.тхт только lofiversion форума (вариант "на любителя", но очень эффективно снижает траффик и повышает глубину проникновения бота)
Отсылаем в бан по айпи особо настойчивых ботов, которые не смотрят на robot.txt (есть и такие). Для этого используем файл .htaccess (про директивы в этом файле смотрим тут)
Способов выяснить айпи вредоносных ботов много, перечислять все не буду.
Убираем сессию для поисковиков, используя встроенные механизмы форума (даём ботам определённую группу на форуме). Вот список ботов для распознавания (настройка форума "Боты поисковых систем"):

spider=UnknownBot
robot=UnknownBot
crawl=UnknownBot
dotbot=DotBot
MJ12bot=MJ12bot
Sogou web spider=SogouBot
Baiduspider=Baiduspider
googlebot=GoogleBot
slurp@inktomi=HotBot
archive_org=ArchiveOrgBot
Ask Jeeves=AskJeevesBot
Lycos=LycosBot
WhatUSeek=WhatYouSeek Bot
ia_archiver=IAArchiverBot
GigaBlast=GigablastBot
Gigabot=GigablastBot
Yandex=YandexBot
Yahoo!=YahooBot
Yahoo-MMCrawler=Yahoo-MMCrawlerBot
TurtleScanner=TurtleScannerBot
TurnitinBot=TurnitinBot
ZipppBot=ZipppBot
StackRambler=RamblerStackBot
oBot=oBot
rambler=RamblerBot
Jetbot=JetBot
NaverBot=NaverBot
libwww=PuntoBot
Aport=AportBot
msnbot=MSNbot
MnoGoSearch=mnoGoSearchBot
booch=BoochBot
Openbot=OpenfindBot
scooter=AltavistaBot
WebCrawler=FastBot
WebZIP=WebZIPBot
GetSmart=GetSmartBot
grub-client=GrubClientBot
Vampire=NetVampireBot

Копируем в окошко "Агент бота" только тех, которые действительно нужны и приносят посетителей. Первые три строчки из списка нужны для распознавания неизвестных роботов, которые имеют в имени слова spider, robot или crawl. Замечу, что вредоносные роботы таких директив обычно не имеют, а маскируются под пользователя.
Если ваш форум рассчитан только на русскоязычных посетителей, то смело удаляйте из этого списка "буржуйских" роботов, наподобии Yahoo и HotBot. Траффик от них = 0, а вот нагрузка очень даже высокая. Можно даже запретить этим ботам сканировать ваш форум вовсе, используя robots.txt
После этого вносим в файл простенькую и эффективную защиту, предложенную FatCat:

лучше подправить в коде, и пусть поисковые боты посещают: они в общем не должны мешать работе, в чем-то даже помогут.

Я дал айпишники не поисковых ботов, а самых злобных парсеров, выявленных на моих серврерах за последние 10 дней.

ОК, держите простенькую заплатку:
sources\classes\class_session.php
Найти:
function update_guest_session()
	{
и добавить ниже:
if(($this->time_now - $this->last_click) < 5)$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'server_too_busy', 'INIT' => 1 ) );
Вместо цифры "5" можно попробовать другие цифры. Чем больше цифра, тем меньше нагрузка на сервер, но тем больше гостей будет получать предупреждение при быстром листании страниц:

Сервер не может в данное время выполнить ваш запрос. Попробуйте позже.


Зарегистрированных пользователей и известных поисковых ботов этот мод не затронет.


Поскольку нас в первую очередь интересует удобство зарегистрированных пользователей, то такой способ эффективен. Из практических опытов могу сказать, что при установке this->last_click) < 3 или this->last_click) < 2 люди не испытывают проблем при просмотре форума.
Рекомендую закрыть все служебные страницы от индексации. Например так, как это сделано вот тут. Не идеал, конечно, но для понимания смысла подойдёт. Если вы используете User Agent отдельно для какого-нибудь робота (например User-agent: Yandex), то учтите, что Яндекс будет учитывать только те директивы, которые прописаны для него, игнорируя остальные. Поэтому дублируйте все строки User-agent: * отдельно для него, как например тут. Следует заметить, что если в строках будет синтаксическая ошибка или директива, которую робот не поддерживает, то паук будет игнорировать ваш robots.txt полностью.
Для Яндекса можно воспользоваться спец-директивой удаления сесии в роботс.тхт (ссылка выше).
Для активных форумов можно воспользоваться опцией в админке IPB "Оптимизация нагрузки на сервер". Её эффективность видна для форумов с четырёхзначной цифрой посещаемости (ИМХО), но пренебрегать ею не стоит. Убирайте всё, без чего ваши пользователи могут спокойно обойтись.

Большое количество одновременных скачиваний.
Прикреплённые файлы - зло. Если вы этого сразу не поняли, то в дальнейшем будут проблемы. Если вы не владелец нескольких серверов - кластеров, отдельно для скриптов, отдельно для статики-файлов-картинок, то сразу ограничивайте возможность прикрепления файлов по-максимуму. В конце концов форум - это не файловый хостинг. С десяток одновременно качающих юзеров легко уложат на лопатки среднестатистический хостинг.
Форум не даёт прямой ссылки на на файл при прикреплённом сообщении, поэтому такое скачивание обслуживает Apache, никакой nginx не поможет. Обычно при активном скачивании превышается лимит CPU. Поэтому совет только один - чем дальше от форума лежат файлы, тем лучше.

Кривая установка кривых модов кривыми руками.
Многие администраторы перегружают свой форум модами. Установка всех "красивостей" и "вкусностей" приносит очень много проблем. Помимо того, что сами моды подчас являются сырыми и дырявыми, их совместное применение на одном форуме делает движок форума бомбой замедленного действия. Ставьте модификации только в том случае, если они жизненно необходимы и без них ваш форум не может обойтись. И уж если установки не избежать, очень внимательно прочитайте инструкцию по установке и просмотрите тему поддержки мода. Лучше всего сначала "потренируйтесь на кошках". Я, например, установил отдельный форум, закрытый от пользователей - точную копию рабочего форума со всеми модификациями. И сначала нужный мод проходит полный тест на резервном форуме.

Существует еще множество причин повышенной нагрузки на сервер, но в этом сообщении я привёл наиболее часто встречающиеся. Всё вышесказанное - ИМХО. Основано на опыте "белых экранов", "бесконечно вращающихся часиков" и затяжной ругани-переписки с некоторыми хостерами. Если кто-нибудь дополнит меня или поправит - я буду только рад.
Надеюсь сообщение поможет вам выбрать верное направление. Ибо чем сильнее развивается ваш форум, тем больше проблем вам придётся решать.
Удачи вам в нашем нелёгком деле.
  • ValRC это нравится

dian@
  • Участники
  • Cообщений: 12

Отправлено

4apai, очень неплохо написано. вы дали тему для размышления, сейчас пытаюсь это все переварить. думаю, по мере обработки появятся вопросы, буду отписываться : )




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных