Как снизить нагрузку сайта DLE на сервер

Автор: Admin    Категория: Советы    Теги:  antileech, Crawl-delay    Дата: 21-12-2012, 18:31
Как снизить нагрузку сайта DLE на серверКак снизить нагрузку на сервер или защита файлов на сервере от прямых ссылок (antileech)

Это своего рода шпаргалка прежде всего для себя, пригодится тем у кого большие сайты с тысячами или десятками тысяч страниц.
Один из моих сайтов вдруг стал серьёзно нагружать сервер. Посыпались жалобы от хостера что сайт сильно грузит винты и базу данных.
Посещалка на тот момент была в среднем 2000 уникальных посетителей в сутки, новостей на сайте было чуть больше 100 000, размер базы данных составлял около 800Mb. Такой сайт не должен создавать серьёзную нагрузку на мощный VPS сервер, однако создаёт, нужно срочно выяснять причину.

Я никогда не заморачивался чтением логов, просматривал периодически логи ошибок чтоб быть в курсе косяков и, по возможности, эти косяки исправлять. Но логи HTTP запросов даже не смотрел. Так вот один из моих сайтов начал серьёзно грузить сервер - посещалка резко стала падать, но с падением посещалки нагрузка не снижалась а только росла. Каждый день нагрузка всё выше и выше. Откуда эта нагрузка!?

И вот тут пришло время смотреть логи сервера обращений по HTTP протоколу. Там видно, кто обращается к сайту, с какой периодичностью, по каким адресам. Анализ логов показал что ОЧЕНЬ много сайтов тянет мои картинки (все картинки к новостям залиты ко мне на сервер). А ведь достаточно поместить мою картинку на какой нибудь очень посещаемый сайт и все, нагрузка обеспечена. Кроме того выяснилось что робот яндекса так же создаёт очень высокую нагрузку на сервер своими запросами. Всё это в сумме ложит мощный(для сайта такого уровня) сервер на лопатки при посещалке в 700-800 человек в сутки. С этим надо что-то делать и причём срочно, пока хостер не "попросил" засунуть свой сайт куда нибудь с такой нагрузкой.

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

Компетентные люди подсказали мне что можно запретить тянуть со своего сайта всё, так же можно умерить аппетит поисковым роботам.
Что бы запретить ВСЕМ тянуть с вашего сайта ВСЁ - в файл .htaccess нужно прописать такое правило:

# Antileech картинок и файлов
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?moisait.ru/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|js|css|zip|rar|exe|doc|pdf|swf|mp3|psd|mov|avi|mpe?g|wmv|wav|wma|ogg)$ - [F]

Где moisait.ru - ваш домен

Однако не стоит забывать что картинки c вашего сайта теперь не могут тянуть не только левые сайты но и поисковые системы, а с картинок гугла и яндекса бывает не плохой трафик, поэтому, хотя бы этим поисковикам надо разрешить загружать ваши картинки:

# Antileech картинок и файлов
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?moisait\.ru [NC]
RewriteCond %{HTTP_REFERER} !^https?://([a-z0-9]+(\-[a-z0-9]+)*\.)*google\.([a-z0-9]+(\-[a-z0-9]+)*\.?)+/ [NC,OR]
RewriteCond %{HTTP_REFERER} !^https?://([a-z0-9]+(\-[a-z0-9]+)*\.)*yandex\.([a-z0-9]+(\-[a-z0-9]+)*\.?)+/ [NC]
RewriteRule \.(gif|jpe?g|png|js|css|zip|rar|exe|doc|pdf|swf|mp3|psd|mov|avi|mpe?g|wmv|wav|wma|ogg)$ - [F]


Благодаря этому простому правилу никто не сможет больше воровать ваши файлы, кушать ваш трафик и ресурсы сервера.
Опять же однако - Эти правила будут работать только если картинки отдаются через апач, если через nginx то правила работать не будут, узнайте у вашего хостинг провайдера через что отдаются картинки. Или спросите у вашего хостера есть ли возможность у него реализации антилича для картинок, чтобы они отдавались только при просмотре с вашего домена.

Для своего сайта о котором идёт речь я прописал такое правило:

# Antileech картинок и файлов
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?epidems\.info [NC]
RewriteCond %{HTTP_REFERER} !^https?://([a-z0-9]+(\-[a-z0-9]+)*\.)*google\.([a-z0-9]+(\-[a-z0-9]+)*\.?)+/ [NC,OR]
RewriteCond %{HTTP_REFERER} !^https?://([a-z0-9]+(\-[a-z0-9]+)*\.)*yandex\.([a-z0-9]+(\-[a-z0-9]+)*\.?)+/ [NC]
RewriteRule \.(gif|jpe?g|png|js|css)$ - [F]


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

Теперь о роботах - существует Директива Crawl-delay для файла robots.txt

Crawl delay Позволяет указать индексирующему роботу минимальный промежуток времени (в секундах) между обращениями к страницам сайта. Этот параметр полезен для крупных проектов, содержащих десятки тысяч страниц и более. Поисковый робот Яндекса при индексировании может создать на такой сайт большую нагрузку, что может вызвать перебои и задержки в работе сайта, поэтому, возможно, вам следует ограничить количество обращений в секунду. Например, директива Crawl-delay: 2 укажет роботу, что он должен выжидать 2 секунды между обращениями к серверу.
Подробнее об этом написано здесь
Для своего сайта я поставил:
Crawl-delay: 10 # задает таймаут в 10 секунд


Благодаря таким не хитрым манипуляциям удалось снизить нагрузку на сервер более чем на 50% без необходимости вмешиваться в файлы конфигурации сервера.
Версия для печати
  • 100
     Просмотров: 13 107      Комментариев: 2   

Понравилась новость Как снизить нагрузку сайта DLE на сервер на MegaWeb.su? Сохрани в закладках или распечатай!


Информация

Внимание!

Если копируете мой материал - будьте добры оставлять ссылку на источник MegaWeb.su пожалуйста, или поставьте на свой сайт мою кнопочку.
Уважайте чужой труд! И Вам хорошо - и мне приятно, это стимулирует дальнейшее развитие проекта!

№ 2 Автор: Admin 4 апреля 2016 21:38

 Вот такой я - Admin

Admin
Администраторы
комментариев
публикаций

Статус: Пользователь offline
Цитата: 06shurik
не сталкивался с таким?

По этому вопросу к сожалению не чем не могу помочь.


----------------------------------------------------
Пойми что тебе нравится и сделай это своей работой!

  • Нравится
  • 0
    

№ 1 Автор: 06shurik 4 апреля 2016 21:13

 Вот такой я - 06shurik

06shurik
Гости
комментариев
публикаций

Статус:
Приветствую можешь подсказать. пойду сразу к делу. на хостинге размещен сайт с сериалами на DLE и размещается в полной новости плеер Uppod. собственно на аренду сервака баланс не позволяет. хочу сделать со своего ноута временное хранилище под видео, к примеру на OS Debian + привязать его с сервису noip с редиректом на поддомен самого сайта. но пугает открытие примых ссылок. подскажи (если можно более подробно) как мне сделать систему антилич, что бы у пользователя ссылки на видео шифровались ? не сталкивался с таким?

  • Нравится
  • 0
    

Информация

Внимание!

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Лента новостей
RSS 2.0

Лента новостей сайта megaweb.su

Блок программ Популярный софт

Коды блока "Популярный софт":

Фиксированный
windows-1251

код блока 1

<script type="text/javascript" src="/softblok/softblok.js" charset="windows-1251"></script>

Резиновый
windows-1251

код блока 2

<script type="text/javascript" src="/softblok/softblok2.js" charset="windows-1251"></script>

Резиновый
UTF-8

код блока 3

<script type="text/javascript" src="/softblok/softblok1.js" charset="utf-8"></script>