Перейти к контенту
  • 0

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


Вопрос

Добрый день. Столкнулась с такой проблемой:

имеем 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

 

(форум нам нужен, вообщето)

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 126
  • Создана
  • Последний ответ

Лучшие авторы в этом вопросе

Лучшие авторы в этом вопросе

Загружено фотографий

Рекомендуемые сообщения

  • 0

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

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

где-то слышала, что это можно решить изменением кода скриптов в самом форуме. забыла указать, у нас стоит 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 бота и грузят сервер. склонна к мысли, что лучше подправить код скрипта, чем вписывать ай-пи - это не выход. нет гарантий, что другие боты начнуть грузить сервер.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
83.149.71.137

Знаю такого, не самый злобный.

62.1.110.245

85.17.231.74

95.211.17.45

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

Я дал айпишники не поисковых ботов, а самых злобных парсеров, выявленных на моих серврерах за последние 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
Ссылка на комментарий
Поделиться на других сайтах

  • 0

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

 

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

 

кстати, что-то подобное я нашла в этой теме:

http://forums.ibresource.ru/index.php?showtopic=57806

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

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

 

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

Могу посоветовать вам прописать в robot.txt после User-agent: * директиву Crawl-delay: 10 и закрыть все служебные страницы от индексации. Например так, как это сделано вот тут. Не идеал, конечно, но для понимания смысла подойдёт.

Изменено пользователем 4apai
Ссылка на комментарий
Поделиться на других сайтах

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

http://www.google.com/search?q=83.149.71.137

 

 

 

кстати, что-то подобное я нашла в этой теме:

http://forums.ibresource.ru/index.php?showtopic=57806

 

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

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

 

 

 

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

Ни фига они не понимают, и эти проблемы есть на других движках, например на phpBB2.

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

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

спасибо, ребята :D

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

и куда этот файлик разместить?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

По моим серверам: http://coda.su/htaccess.txt

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0
По моим серверам: http://coda.su/htaccess.txt

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

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

 

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

 

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

 

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

 

 

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

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0
FatCat, так чтобы его к себе положить и он работал нужно убрать .txt ?
Ссылка на комментарий
Поделиться на других сайтах

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

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А если у меня нет такого файла ?

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Понял спасибо

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Поскольку проблема для меня очень актуальна, а чёткой нормально структурированной информации я не нашёл, предлагаю составить небольшую инструкцию по снижению нагрузки на сервер, при использовании форума 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. Поэтому совет только один - чем дальше от форума лежат файлы, тем лучше.

 

Кривая установка кривых модов кривыми руками.

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

 

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

Надеюсь сообщение поможет вам выбрать верное направление. Ибо чем сильнее развивается ваш форум, тем больше проблем вам придётся решать.

Удачи вам в нашем нелёгком деле.

  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
4apai, спасибо за столь подробное полезное описание
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Если форум распознает бота как бота, то он ему запрещает &s=xxx в ссылках.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Немного добавлю.

Если на вашем сервере много популярных картинок, файлов и прочего. Часто такие ресурсы подвержены хот-линку (HotLink). То есть имеют прямые ссылки на файлы с других форумов\сайтов. Чем это плохо. Ваш сервер попросту используют другие, не принося пользователей и иных дивидендов. Защита от этого весьма проста. Берём файл .htaccess и вносим туда такие строки:

 

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?вашсайт.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?еще-один-сайт.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://третий-сайт.ru/картинка.jpg [NC,R,L]

 

Расшифровка:

Файлы с расширениями jpg jpeg png gif, которые находятся на вашем сервере будут доступны только в пределах вашего домена вашсайт.ru и на "дружеском" ресурсе еще-один-сайт.ru. Всем остальным, кто использовал ваши ресурсы вместо желаемой картинки будет показана какая-нибудь картинка с адреса http://третий-сайт.ru/картинка.jpg

Внимательно - не указывайте картинку на своём сервере, поскольку вы его защищаете от хот-линка и апач пойдёт по кругу.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Немного добавлю.

Если на вашем сервере много популярных картинок, файлов и прочего. Часто такие ресурсы подвержены хот-линку (HotLink). То есть имеют прямые ссылки на файлы с других форумов\сайтов. Чем это плохо. Ваш сервер попросту используют другие, не принося пользователей и иных дивидендов. Защита от этого весьма проста. Берём файл .htaccess и вносим туда такие строки:

 

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?вашсайт.ru [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?еще-один-сайт.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://третий-сайт.ru/картинка.jpg [NC,R,L]

 

Расшифровка:

Файлы с расширениями jpg jpeg png gif, которые находятся на вашем сервере будут доступны только в пределах вашего домена вашсайт.ru и на "дружеском" ресурсе еще-один-сайт.ru. Всем остальным, кто использовал ваши ресурсы вместо желаемой картинки будет показана какая-нибудь картинка с адреса http://третий-сайт.ru/картинка.jpg

Внимательно - не указывайте картинку на своём сервере, поскольку вы его защищаете от хот-линка и апач пойдёт по кругу.

Кто нибудь пробовал это ?

Себе поставил и не пойму работает или нет

Изменено пользователем Док
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Себе поставил и не пойму работает или нет

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

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.