• Добро пожаловать на биржу фриланса Justwebber.com

  • Мы делаем удаленное сотрудничество удобным

  • Заказчикам - огромный выбор исполнителей, а фрилансерам - неиссякаемый поток проектов

  • За удаленной работой - ваше будущее и финансовое благополучие

Уменьшаем нагрузку на сервер

Снижение нагрузки на сервер на 90 %


Навигатор: Форумы / Предметное общение / Программирование / Уменьшаем нагрузку на сервер
Автор Сообщение

krevetka

#1 /19.10.2013 15:14
АДМИНИСТРАТОР   


 149
 

Карма:  12




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

Далее хочу рассказать о методах, позволяющих снизить нагрузку до 90% от первоначальной. При этом вам не понадобятся знания администрирования сервера, root доступ к серверу и знание прочих "высоких технологий", все будем делаться на пользовательском уровне.

Для начала разберемся что такое нагрузка и откуда она берется. Под нагрузкой понимается высокий расход оперативной памяти сервером, нагрузка на процессор (процессорное время), а также нагрузка на интернет канал. Вот эти параметры мы и будем разгружать. Кто создает нагрузку? Нет, не посетители! На среднестатистическом сайте посетители (люди) создают процентов 5-10 нагрузки, остальные ресурсы съедают боты (поисковые и прочие). Вот в отношении их мы и будем наводить порядок, наша задача будет состоять в том, чтоб на сайт не ходили "плохие и бесполезные" боты, т.е. уменьшаем по максимуму реальную (ботовую) посещаемость сайта...

Для наглядности подсчета будем считать исходную нагрузку 100 условных пунктов. Кстати, все выводы, проценты и наблюдения были сделаны после 3 месяцев наблюдения (и экспериментов) за примерно 200 сайтами. Также хочу уточнить, что чем больше на сайте страниц и чем сайт старше и раскрученнее - тем больше на нем ботовая посещаемость и рекомендации описание ниже будут давать более заметный эффект.

1) Первый способ снижения нагрузки - определиться с главным зеркалом сайта. Скорей всего ваш сайт доступен по двум адресам - с www и без. Большинство ботов (кроме самых умных - Яндекса и Гугла) считают что это два разных сайта, а значит и выкачивают ваш сайт по два раза. Наша задача - решить какой URL сайта оставлять, а с какого сделать 301 редирект на главное зеркало. Для примера идем по ссылке вида: httр://webmaster.yandex.ru/check.xml?hostname=www.foxi.biz (вместо www.foxi.biz поставить ваш сайт) и видим: Сайт является зеркалом foxi.biz. Значит в нашем случае будем делать главным зеркалом домен foxi.biz, а с www.foxi.biz сделаем 301 редирект. Редирект этот делается с помощью .htaccess

Если вы желаете, чтоб главным доменом был сайт без www, то в .htaccess который лежит у вас в корне (если его там не лежит, то создать) пишите такое:

RewriteEngine on
 RewriteCond %{HTTP_HOST} ^www.foxi.biz$ [NC]
 RewriteRule ^(.*)$ httр://foxi.biz/$1 [R=301,L]

Вместо foxi.biz естественно прописать нужно ваш сайт. Адрес с www достаточно быстро переклеится на вид без www, все SEO показатели также склеятся (суммируются) достаточно быстро.

Если вашим главным доменом будет домен с www - то в .htaccess писать:

RewriteEngine on
 RewriteCond %{HTTP_HOST} ^foxi.biz$ [NC]
 RewriteRule ^(.*)$ httр://www.foxi.biz/$1 [R=301,L]
Также не забывайте указать главный домен в файле robots.txt. Такая принудительная склейка зеркал заметно снижает посещаемость сайта ботами (им теперь не нужно по 2 раза выкачивать один и тот же сайт), в среднем это снимет 20 пунктов нагрузки с сайта.

2) Второй способ - robots.txt, в него обязательно прописать (для яндекса) главный домен, а также (для всех ботов) закрыть от индексации все бесполезные страницы (часто это страницы списка пользователей, внутренние дубли страниц, поиск по сайту, страницы тегов, pda и print версии сайта и т.п.). Если таких "мусорных" страниц на вашем сайте было много - то и нагрузка снизится заметно.

3) Третий способ оптимизации - "именной бан". Достаточно действенный способ, с помощью .htaccess блокируем полностью доступ к сайту ботам по их именам. Для этого в .htaccess прописываем:

## Блокировка по USER AGENT:
 RewriteCond %{HTTP_USER_AGENT} MJ12bot [OR]
 RewriteCond %{HTTP_USER_AGENT} Java [OR]
 RewriteCond %{HTTP_USER_AGENT} NjuiceBot [OR]
 RewriteCond %{HTTP_USER_AGENT} Gigabot [OR]
 RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
 RewriteCond %{HTTP_USER_AGENT} JS-Kit [OR]
 RewriteCond %{HTTP_USER_AGENT} Voyager [OR]
 RewriteCond %{HTTP_USER_AGENT} PostRank [OR]
 RewriteCond %{HTTP_USER_AGENT} PycURL [OR]
 RewriteCond %{HTTP_USER_AGENT} Aport [OR]
 RewriteCond %{HTTP_USER_AGENT} ia_archiver [OR]
 RewriteCond %{HTTP_USER_AGENT} DotBot [OR]
 RewriteCond %{HTTP_USER_AGENT} SurveyBot [OR]
 RewriteCond %{HTTP_USER_AGENT} larbin [OR]
 RewriteCond %{HTTP_USER_AGENT} Butterfly [OR]
 RewriteCond %{HTTP_USER_AGENT} libwww [OR]
 RewriteCond %{HTTP_USER_AGENT} Wget [OR]
 RewriteCond %{HTTP_USER_AGENT} SWeb [OR]
 RewriteCond %{HTTP_USER_AGENT} LinkExchanger [OR]
 RewriteCond %{HTTP_USER_AGENT} Soup [OR]
 RewriteCond %{HTTP_USER_AGENT} WordPress [OR]
 RewriteCond %{HTTP_USER_AGENT} PHP/ [OR]
 RewriteCond %{HTTP_USER_AGENT} spbot [OR]
 RewriteCond %{HTTP_USER_AGENT} MLBot [OR]
 RewriteCond %{HTTP_USER_AGENT} InternetSeer [OR]
 RewriteCond %{HTTP_USER_AGENT} FairShare [OR]
 RewriteCond %{HTTP_USER_AGENT} Yeti [OR]
 RewriteCond %{HTTP_USER_AGENT} Birubot [OR]
 RewriteCond %{HTTP_USER_AGENT} YottosBot [OR]
 RewriteCond %{HTTP_USER_AGENT} gold\ crawler [OR]
 RewriteCond %{HTTP_USER_AGENT} Linguee [OR]
 RewriteCond %{HTTP_USER_AGENT} Ezooms [OR]
 RewriteCond %{HTTP_USER_AGENT} lwp-trivial [OR]
 RewriteCond %{HTTP_USER_AGENT} Purebot [OR]
 RewriteCond %{HTTP_USER_AGENT} User-Agent [OR]
 RewriteCond %{HTTP_USER_AGENT} kmSearchBot [OR]
 RewriteCond %{HTTP_USER_AGENT} SiteBot [OR]
 RewriteCond %{HTTP_USER_AGENT} CamontSpider [OR]
 RewriteCond %{HTTP_USER_AGENT} ptd-crawler [OR]
 RewriteCond %{HTTP_USER_AGENT} HTTrack [OR]
 RewriteCond %{HTTP_USER_AGENT} suggybot [OR]
 RewriteCond %{HTTP_USER_AGENT} ttCrawler [OR]
 RewriteCond %{HTTP_USER_AGENT} Nutch [OR]
 RewriteCond %{HTTP_USER_AGENT} Zeus
 RewriteRule ^(.*)$ – [F,L]

Также в этот список можно добавить ботов: bingbot, msnbot, Slurp, для русскоязычных сайтов от них пользы мало, трафика почти нету, а Yahoo (Slurp) нагрузку создает огромнейшую, т.к. очень активный и агрессивный. Даже без блокировки Yahoo и Bing - этот способ уменьшит посещаемость ботами примерно на 40 условных пунктов. Также неплохо было бы следить за серверной статистикой и отслеживать других активных ботов, т.к. у меня этот список периодически пополняется.

4) Четвертый способ - блокировка по IP. Тут вам придется вести логи активности ip адресов или анализировать серверные логи, и банить ip адреса безымянных активных ботов, в основном это парсеры (автоматические воры контента и т.п.) и в большинстве случаев их ip принадлежат хостинг провайдерам, заметили активный ip, посмотрите whois ip адреса, например вот так http://whois.domaintools.com/83.222.14.3 и если там явно указан хостер - смело можно всю подсеть банить через .htaccess (каждый ip построчно в виде: deny from 83.222.14.). Очень много таких неизвестных ботов-парсеров, а также спам-ботов идет с российских хостингов: Мастерхост, Агава, Руцентр, Можордомо, также Китай, Турцию и т.п. страны третьего мира можно банить сразу всю подсеть... Мне после таких периодических банов удавалось снизить активность заметно. Данный способ дает минимум 10 пунктов снижения нагрузки.

5) Пятый способ - баним примитивных самописных ботов, такие боты имеют отличие - у них ничего не написано в HTTP_USER_AGENT и HTTP_REFERER, если оба условия верны - блокируем. Я это делаю средствами php, в самое начало скриптов (до вызова конфигов, подключений к базе и т.п. тяжелых процессов) вставляю код:

if ($_SERVER["HTTP_REFERER"] == '' AND $_SERVER["HTTP_USER_AGENT"] == '') {die('Bad bot');}

В определенных условиях это дает до 10 пунктов снижения нагрузки.

Вот как бы и все. Такие кажется на первый взгляд простые и примитивные методы, а количество посещений сайта ботами снижается на 80-90% (и соответственно нагрузка падает очень заметно), при этом сайт ни в чем не страдает и не ущемляется, т.е. можно не бояться, что поисковики начнут к сайту плохо относиться, даже наоборот, способы № 1 и 2 - можно отнести к внутренней оптимизации сайта... Если у вас многостраничные сайты (от нескольких тысяч страниц) или сайтов много - вам обязательно нужно проделать вышеописанное, и возможно вместо выделенного сервера за 200$ в месяц - вам хватит обычного шаред хостинга за 20$ ...

Источник: http://foxi.biz/snizaem-nagruzku-na-server-na-90-protentov.html