Какие меры принять для определения и устранения причин чрезмерной нагрузки на сервер?
Делюсь своим опытом в статье.
1) 3 августа получил письмо службы технической поддержки ТаймВэб:
«Мы обнаружили, что Ваш аккаунт оказывает чрезмерную нагрузку на сервер. Возможно, Ваш проект стал более посещаемым или в работе сайта что-то пошло не так. На сервере виртуального хостинга чрезмерная нагрузка, оказываемая одним аккаунтом, может негативно сказаться на работе всего сервера, поэтому эту проблему важно оперативно решить».
2) Проверка access_logs файлов показала множество попыток доступа к сайтам:
Решение
1) Блокировка директивой Disallow: / в файле robots.txt для следующих зарубежных ботов:
Многозначность толкования разных источников «apache htaccess block bots» тоже не привела к результату. Мы установили в htaccess код в двух вариантах предлагаемых разными авторами:
Для одних сайтов директиву Deny from env в формате SetEnvIfNoCase User-Agent
Д ля других сайтов директиву RewriteCond %
Анализ сегодняшнего 17Aug2017 файла access_log показал от DotBot 108 сканов по IP 216.244.66.198 и 216.244.66.250 Baiduspider 7 сканов по IP 180.76.15.17.
error_log стали содержательными, вместо 2-3 строк, теперь 40-50 строк отказа, типа:
То есть защита наша работает, но пока работает лишь частично. Нагрузка остаётся завышенной.
В результате наших действий нагрузка снизилась вдвое прежней, но мы ведем поиск оптимизации доступа.
У кого есть положительный опыт принятия мер по определению и устранению причин чрезмерной нагрузки на сервер? Просьба поделиться подробно, поскольку эта проблема становится актуальной для многих.
Блокировка ботов и снижение нагрузки на сервер
Исследуя логи сервера, можно найти огромное число ботов, которые буквально атакуют ваш сайт изо дня в день, создавая огромную нагрузку на сервер. Блокировка ненужных ботов – логичный этап развития крупных проектов.
Вторая сторона медали – исследование вашего проекта конкурентами через сервисы, например: ahrefs, semrush, serpstat, linkpad и другие. Если вы делаете SEO-продвижения с помощью PBN-сетей, через эти сервисы можно очень легко отследить всю вашу сеть, после чего “настучать” в Google для последующего бана всей сети сайтов читера. Чтобы этого не случилось, следует уделить время закрытию от ботов этих сервисов.
Есть и другие преимущества от блокировки, например: частичная защита от воровства контента, защита от замысла ддос и хакерских атак. Обычно все это делается с предварительным анализом сайта, которые проводятся некоторыми из нижеуказанных ботов.
Популярные боты, создающие нагрузку на сервер
Список ботов, создающих нагрузку на сервер, периодически пополняется и обновляется:
Напишите в комментариях, нужно ли расписывать, к чему относятся каждый из ботов выше (название сервиса и другая информация)?
Как заблокировать AhrefsBot, SemrushBot, MJ12bot и других ботов?
Существует 2 известных мне метода надежной блокировки от плохих ботов:
Если вы знаете другие методы, обязательно напишите в комментариях!
Список полезных и вредных ботов и краулеров
В этой статье буду рассказывать о ботах, полезных и вредных, чтобы было известно, каких ботов можно блокировать, а какие не стоит. Также в отдельной статье рассказываю о том, как нужно блокировать вредоносных ботов, чтобы снизить нагрузку на сайт.
Иногда буду копаться по логам и искать новых. Здесь только те, что попались на моих сайтах.
Полезные боты и краулеры
В этом списке будут полезные боты и краулеры, а также информация о них, рекомендую ознакомиться, прежде чем блокировать их. Также можете посмотреть информацию. Полезный бот или краулер для одних людей, может быть бесполезен для других.
GrapeshotCrawler/2.0
Oracle Data Cloud Crawler — это автоматизированный краулер от компании Oracle. Нужен для анализа содержимого страниц для рекламодателей. Используется во многих системах назначения ставок в режиме реального времени (RTB ), применяется также и в Adsence, так что блокировка данного бота может плохо сказаться на ваших доходах с рекламы.
Идентифицирует себя так: (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php).
Диапазон IP- адресов GrapeshotCrawler/2.0:
от 148.64.56.64 до 148.64.56.80
от 148.64.56.112 до 148.64.56.128
Без необходимости блокировать не рекомендуется, но если у вас нет контекстной рекламы на сайте, то можно избавиться от данного краулера.
Googlebot/2.1 (Робот Googlebot)
Поисковый робот компании Google, выполняет обход и индексирование страниц сайтов. Блокировать нельзя, так как это может плохо сказаться на позициях в поисковой системе Google.
Идентифицирует себя так: (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Если данный робот даёт слишком серьёзную нагрузку на сервер, можете снизить частоту сканирования (https://support.google.com/webmasters/answer/48620).
YandexTurbo/1.0
Краулер для страниц Яндекс Турбо, на сайте появляется только в том случае, если к нему подключены Турбо-страницы. Обходит RSS- фид для Турбо-страниц.
Идентифицирует себя так: (compatible; YandexTurbo/1.0; +http://yandex.com/bots).
Блокировать YandexTurbo/1.0 не рекомендуется, так как это может блокировать отображение Турбо-страниц в Яндекс.
YandexBot/3.0
Поисковой краулер Яндекс, по совместительству основной индексирующий робот. Совершает обход страниц, а также сбор данных, содержащихся на ней. Блокировать не рекомендуется, так как это может негативно сказаться на позициях сайта в поисковой системе Яндекс.
Идентифицирует себя так: (compatible; YandexBot/3.0; +http://yandex.com/bots).
Если данный краулер создаёт слишком сильную нагрузку на сервер, можно ограничить скорость обхода им в настройках Яндекс Вебмастер.
YandexAccessibilityBot/3.0
Проверяет доступность страниц для пользователей, для этого их скачивает. Блокировать не рекомендуется, так как это может плохо сказаться на позициях в ПС Яндекс. Настройки скорости обхода в Яндекс Вебмастер игнорирует.
YandexMetrika/2.0 и YandexMetrika/3.0, YandexMetrika/4.0
Роботы Яндекс Метрики, появляются на сайте только при подключении оной. YandexMetrika/4.0 скачивает стили для Яндекс Метрики для того, чтобы правильно их отображать в Вебвизоре.
YandexPartner/3.0
Скачивает информацию о страницах сайтов, подключённых к Партнёрской сети Яндекс, анализирует на соответствие рекламы и контента, также следит за политикой назначения ставок на конкретных страницах.
ias-va/3.1, ias-jp/3.1
Поисковой краулер ias-va, а также ias-jp/3.1 от компании ADmantX, используется в партнёрской сети AdSense, соответственно, его нельзя блокировать, если используете AdSense на своём сайте. Данный краулер собирает данные о семантике сайта.
Идентифицируются так: ias-va/3.1 (+https://www.admantx.com/service-fetcher.html).
Bingbot
И дентифицирует себя так: (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm).
newspaper/0.2.8
Судя по IP, относится к GoogleUserContent, вполне возможно, занимается сбором контента для рекомендательных систем Google и GoogleNews. Лучше не блокировать.
Mail.RU_Bot/2.0, Mail.RU_Bot/Img/2.0
Индексирующий краулер компании Mail.ru, соответственно, Mail.RU_Bot/2.0 является поисковым краулером, который обходит страницы сайта и добавляет их в индекс поисковой системы.
Mail.RU_Bot/Img/2.0 — бот, который делает обход по изображениям. Оттуда я ещё ни разу не видел трафика на сайте, но всё же лучше не блокировать, особенно если сайт специализируется на медиаконтенте.
vkShare
Бот, который приходит на сайт, если посетитель расшаривает страницу какого-либо сайта в социальную сеть Вконтакте через виджет. Берёт такие данные, как фавиконка сайта, изображение расшариваемой страницы, а также данные, вроде анонса, заголовка.
Идентифицирует себя так: (compatible; vkShare; +http://vk.com/dev/Share).
Если vkShare заблокировать, то расшаривание страниц во Вконтакте не будет корректно работать.
facebookexternalhit/1.1 Facebot Twitterbot/1.0
Краулеры Facebook и Twitter, что, впрочем, ясно из названия, собираю данные ваших расширенных описаний, а также данные со страниц для отображения оных. Есть подозрения, что также проверяет контент на соответствие «Нормам сообществ», но это не точно.
Если необходимое правильное отображение страниц при расшаривании в данные социальные сети, лучше не блокировать.
Mediapartners-Google
Бот, проверяющий сайты-партнёры в Google Adsense. Требуется для правильной обработки контекстной рекламы. Если являетесь партнёром Adsense, блокировать нельзя, так как сие действие может сократить доходы с рекламы.
FeedBurner/1.0
Инструмент Google. Считывает RSS- лент. Для каких целей до конца неясно. Идентифицирует себя так: FeedBurner/1.0 (http://www.FeedBurner.com). Блокировать, конечно, не рекомендуется, но если создаёт сильную нагрузку, то можно.
Плохие боты и краулеры
В этой части будут рассмотрены плохие боты, которые следует заблокировать, чтобы снизить нагрузку на сервер сайта. Но тоже смотрите внимательно, так как некоторые плохие боты могут оказаться полезными конкретно для вашего сайта.
DotBot
Бот компании Moz, собирает статистику о сайтах для коммерческой продажи для клиентов сервиса Moz, данный бот может быть полезен только для тех сайтов, которые работают с Moz по API, в противном случае это лишняя нагрузка на сайты.
Идентифицирует себя так: (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; help@moz.com).
BLEXBot
Собирает SEO- данные о сайте для коммерческой продажи клиентам. Создаёт лишнюю нагрузку, а также делает данные о сайте прозрачными для конкурентов. Рекомендуется блокировать.
Идентифицирует себя так: (compatible; BLEXBot/1.0;).
AhrefsBot
Бот компании Ahfers, занимающейся SEO- аналитикой, собирает данные о вашем сайте (SEO, линкбилдинг, трафик), а потом продаёт её клиентам. Лучше блокировать, так как эти данные могут быть полезными для ваших конкурентов.
Идентифицирует себя так: (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/).
MBCrawler
MBCrawler/1.0 разработан MonitorBacklinks, занимается анализом обратных ссылок и создаёт серьёзную нагрузку на сайты. Очень активен, рекомендуется блокировать, так как может получить много информации об обратных ссылках с вашего сайта. Идентифицирует себя так: (MBCrawler/1.0 (https://monitorbacklinks.com/robot). Лучше блокировать.
YaK/1.0
Это бот компании LinkFluence. Собирает данные о сайтах для дальнейшего коммерческого использования. Соответственно, может быть использован конкурентами против вас. Рекомендуется блокировать.
Идентифицирует себя так: (compatible; YaK/1.0; http://linkfluence.com/; bot@linkfluence.com).
niraiya.com/2.0 (Stolen Passwords Checker Bot)
Бот для проверки украденных паролей от компании Nirariya, компания занимается продажей менеджера паролей. Скорее всего, проверяю сайт на утечки паролей, но бот создаёт лишнюю нагрузку. Лучше блокировать.
Идентифицирует себя так: (compatible; niraiya.com/2.0;)
MegaIndex.ru/2.0
Бот Megaindex.ru, собирает данные о вашем сайте, SEO, обратных ссылках, потом предоставляет эту информацию на коммерческой основе. Бот можно расценить как вредоносный, если не используете его для аналитики собственного сайта. Также делает прозрачным данные о вашем сайте для конкурентов.
Идентифицирует себя так: (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler).
MJ12bot
Очередной бот SEO- аналитики, если начал появляться на сайте, то будет его серьёзно грузить. Блокировать MJ12bot следует обязательно. Это бот компании Majestic, впрочем, если работаете на сервисах, связанных с Majestic, то не стоит его блокировать, например, если работаете на биржах ссылок вроде Majestic или Miralinks, то там очень важны показатели Majestic.
SemrushBot
SemrushBot от SEO- сервиса Semrush, периодически создаёт серьёзную нагрузку на сайт, обходя его снова и снова. Данные, которые собирает данный бот, нужны для того, чтобы продавать их на коммерческой основе.
Соответственно, информация, собранная данным ботом, будет доступна конкурентам, что может не пойти вам на пользу.
Cloudfind
Бот от одноимённой компании, ищет парнёров для аффилирования для партнёрского маркетинга. Чаще гуляет по зарубежным площадкам, но периодически появляется и в ру-сегменте.
CriteoBot/0.1
Краулер компании Criteo. По идее должен проверять страницу на соответствие контента маркетинговым целям. Например, анализировать статью по содержанию, а потом отнести к определённой категории.
Идентифицирует себя так: CriteoBot/0.1 (+https://www.criteo.com/criteo-crawler/).
Относится ли к каким-либо партнёрским сетям вроде Adsense или РСЯ не удалось, информации о том, где используется данный краулер, тоже найти не удалось, так что решил CriteoBot/0.1 блокировать.
GetIntent Crawler
Краулер от компании GetIntent. Собирает данные о сайтах для маркетинговых целей, например, для анализа перспектив размещения контекстной рекламы. С какими рекламными платформами сотрудничает, неизвестно, информации о том, работает данный краулер с AdSense или РСЯ найти не удалось, так что решил его заблокировать.
SafeDNSBot
Бот от компании SafeDNS, компания позиционирует себя как средство защиты от вредоносных сайтов и периодически проверяет сайты на безопасность. Нагрузку на сайт создаёт небольшую, так что можно и не блокировать.
SeopultContentAnalyzer/1.0
Бот компании PromoPult (бывш. SeoPult ), собирает SEO- данные сайта вроде обратных ссылок, ключевых слов сайта и т. п. Соответственно, собранные данные будут анализировать и предоставляться вашим конкурентам на коммерческой основе. Бота SeopultContentAnalyzer/1.0 рекомендуется блокировать.
serpstatbot/2.0
Бот от известной платформы Serpstat. Постоянно анализирует сайты на наличие обратных ссылок. Полученную информацию использует в коммерческих целях, предоставляя её в рамках своего сервиса. Соответственно, помимо дополнительной нагрузки на сервер, предоставляет больше информации о вашем сайте конкурентам. Рекомендуется блокировать.
LinkpadBot
Бот сервиса LinkPad. LinkpadBot собирает информацию о ссылочном профиле вашего сайта для коммерческого использования, соответственно, ваши конкуренты могут получить данные о ссылках, которые вы размещаете на сайте, а также будут дискредитированы сетки сайтов-сателлитов. Лучше данного бота блокировать.
Slurp
Поисковой краулер Yahoo! За особым беспределом не замечен, но в СНГ с него трафика практически нет, соответственно, особой пользы от Slurp Bot не будет. Лучше заблокировать, ибо иногда начинает активно обходить сайты.
Если сайт ориентирован на зарубежную аудиторию, лучше оставить.
DataForSeoBot/1.0
Бот сервиса DataForSeo, занимается проверкой обратных ссылок и анализом сайта для дальнейшего использования в коммерческих целях, например, для предоставления SEO- данных вашего сайта конкурентам.
Пользы от DataForSeoBot/1.0 нет, лучше блокировать.
Rome Client (http://tinyurl.com/64t5n)
Неизвестно, что за краулер этот Rome Client, толком и не нашёл о нём информации. Судя по IP, запросы идут с сервиса Amazon AWS. Ориентируется именно на Feed сайта, вполне возможно, что выгружает его для своих целей. Так как неизвестно, что это за бот и какие цели преследует, лучше его блокировать.
Scrapy
Бот Scrapy разработан для того, чтобы обходить сайты с открытым исходным кодом и вытаскивать с них данные. Зачем? Цели могут быть разные, как хорошие, так и плохие. В общем, данного бота лучше блокировать.
FlipboardRSS
Бот платформы Flipboard, берёт вашу RSS- ленту для публикации. В целом не вредоносный, даже необходимый, если вы публикуете свои материалы на Flipboard, проблем в том, что вашу RSS- ленту на данном сервисе может опубликовать кто угодно. Вы не получите оттуда трафика, зато получите периодический обход ботом.
FlipboardProxy
Тоже от FlipBoard, фактически проверяет ваш сайт, а также анализирует, как он выглядит. Нужен для отображения материалов на Flipboard. Если трафика с этого сервиса нет, можно бота блокировать.
Proximic Bot
Иногда в логе можно видеть этого бота, идентифицирует себя так: (compatible; proximic; +https://www.comscore.com/Web-Crawler).
Занимается сопоставлением соответствия контента и контекстной рекламы. Работает ли с AdSense или РСЯ неизвестно, соответственно, не могу отнести его к полезным, вполне возможно, что этот бот просто собирает информацию для проектов и «тренируется» на сторонних сайтах, чтобы точнее определять тематику данных на разных языках.
ZoominfoBot
Единственные данные в строке идентификации: (zoominfobot at zoominfo dot com). Собирает только деловую информацию с сайта, как правило, вытягивает весь фид сайта. Для русскоязычной аудитории практически бесполезен.
Информацию собирает в коммерческих целях, для агрегации и предоставления своим пользователям на коммерческой основе. Лучше блокировать.
SeznamBot/3.2
Краулер чешской поисковой системы Seznam. Если у вас сайт не на чешском языке, толку, скорее всего, от него никакого. Да и посетителей на этом «поисковике» нет. В общем, за всю жизнь моего сайта не видел оттуда ни одного посетителя, соответственно, считаю этот бот вредным и рекомендую его блокировать.
Seekport Crawler
Краулер очередного «недопоиска». Трафика с него не видно, перспектив у данной поисковой системы тоже нет, информации о ней практически никакой.
Идентифицирует себя так: (compatible; Seekport Crawler; http://seekport.com/).
Думаю, мало смысла пускать их краулер к себе на сайт, перспектив мало, особенно для СНГ.
Dotbot что за бот
Dotbot is a tool that bootstraps your dotfiles (it’s a [Dot]files [bo]o[t]strapper, get it?). It does less than you think, because version control systems do more than you think.
See this blog post or more resources on the tutorials page for more detailed explanations of how to organize your dotfiles.
Great! You can automate the creation of your dotfiles by using the user-contributed init-dotfiles script. If you’d rather use a template repository, check out dotfiles_template. Or, if you’re just looking for some inspiration, we’ve got you covered.
Integrate with Existing Dotfiles
The following will help you get set up using Dotbot in just a few steps.
If you’re using Git, you can add Dotbot as a submodule:
If you’re using Mercurial, you can add Dotbot as a subrepo:
To get started, you just need to fill in the install.conf.yaml and Dotbot will take care of the rest. To help you get started we have an example config file as well as configuration documentation for the accepted parameters.
If you prefer, you can install Dotbot from PyPI and call it as a command-line program:
Here’s an example of a complete configuration.
Dotbot uses YAML or JSON-formatted configuration files to let you specify how to set up your dotfiles. Currently, Dotbot knows how to link files and folders, create folders, execute shell commands, and clean directories of broken symbolic links. Dotbot also supports user plugins for custom commands.
Ideally, bootstrap configurations should be idempotent. That is, the installer should be able to be run multiple times without causing any problems. This makes a lot of things easier to do (in particular, syncing updates between machines becomes really easy).
Dotbot configuration files are arrays of tasks, where each task is a dictionary that contains a command name mapping to data for that command. Tasks are run in the order in which they are specified. Commands within a task do not have a defined ordering.
When writing nested constructs, keep in mind that YAML is whitespace-sensitive. Following the formatting used in the examples is a good idea. If a YAML configuration file is not behaving as you expect, try inspecting the equivalent JSON and check that it is correct.
Most Dotbot commands support both a simplified and extended syntax, and they can also be configured via setting defaults.
Link commands specify how files and directories should be symbolically linked. If desired, items can be specified to be forcibly linked, overwriting existing files if necessary. Environment variables in paths are automatically expanded.
Link commands are specified as a dictionary mapping targets to source locations. Source locations are specified relative to the base directory (that is specified when running the installer). If linking directories, do not include a trailing slash.
Link commands support an optional extended configuration. In this type of configuration, instead of specifying source locations directly, targets are mapped to extended configuration dictionaries.
| Pattern | Meaning |
|---|---|
| * | matches anything |
| ** | matches any file, recursively (Python >= 3.5 only) |
| ? | matches any single character |
| [seq] | matches any character in seq |
| [!seq] | matches any character not in seq |
Create commands specify empty directories to be created. This can be useful for scaffolding out folders or parent folder structure required for various apps, plugins, shell commands, etc.
Create commands are specified as an array of directories to be created. If you want to use the optional extended configuration, create commands are specified as dictionaries. For convenience, it’s permissible to leave the options blank (null) in the dictionary syntax.
| Parameter | Explanation |
|---|---|
| mode | The file mode to use for creating the leaf directory (default: 0777) |
The mode parameter is treated in the same way as in Python’s os.mkdir. Its behavior is platform-dependent. On Unix systems, the current umask value is first masked out.
Shell commands specify shell commands to be run. Shell commands are run in the base directory (that is specified when running the installer).
Shell commands can be specified in several different ways. The simplest way is just to specify a command as a string containing the command to be run.
Another way is to specify a two element array where the first element is the shell command and the second is an optional human-readable description.
Shell commands support an extended syntax as well, which provides more fine-grained control.
| Parameter | Explanation |
|---|---|
| command | The command to be run |
| description | A human-readable message describing the command (default: null) |
| quiet | Show only the description but not the command in log output (default: false) |
| stdin | Allow a command to read from standard input (default: false) |
| stdout | Show a command’s output from stdout (default: false) |
| stderr | Show a command’s error output from stderr (default: false) |
Clean commands are specified as an array of directories to be cleaned.
Clean commands also support an extended configuration syntax.
| Parameter | Explanation |
|---|---|
| force | Remove dead links even if they don’t point to a file inside the dotfiles directory (default: false) |
| recursive | Traverse the directory recursively looking for dead links (default: false) |
Note: using the recursive option for
is not recommended because it will be slow.
Default options for plugins can be specified so that options don’t have to be repeated many times. This can be very useful to use with the link command, for example.
Defaults apply to all commands that come after setting the defaults. Defaults can be set multiple times; each change replaces the defaults with a new set of options.
Defaults are specified as a dictionary mapping action names to settings, which are dictionaries from option names to values.
All built-in Dotbot directives are written as plugins that are loaded by default, so those can be used as a reference when writing custom plugins.
See here for a current list of plugins.
Check out the Dotbot wiki for more information, tips and tricks, user-contributed plugins, and more.





