Нагрузка на аккаунт виртуального хостинга

Категория:Виртуальный хостинг -> Инструкции -> Панель управления

Содержание


Что такое нагрузка

Нагрузка — это процент использования ресурсов сервера в момент выполнения задачи. У каждого сервера есть ограниченные ресурсы: процессор, память, дисковая система. В момент выполнения задачи выделяется некоторая часть свободных в настоящий момент ресурсов. В зависимости от типа производимых действий той или иной задаче может требоваться больше или меньше ресурсов: для выполнения одних задач достаточно 1% процессорного времени (потому что основное время тратится, например, на ввод/вывод или на ожидание данных), некоторые же сложные вычисления и обработка данных могут потребовать 70% ресурсов процессора или более. Точно так же различным задачам требуется больше или меньше оперативной памяти, высокая или низкая дисковая активность.

Итак, нагрузка — это процент использования ресурсов сервера.

Откуда берутся письма о нагрузке

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

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

Как реагировать на письма о нагрузке

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

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

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

Почему нужно следить за нагрузкой

На одном сервере виртуального хостинга находится много сайтов разных пользователей, и имеющиеся ресурсы распределяются в зависимости от нужд выполняемых в данный момент скриптов (в этом заключается сама идея и обеспечивается низкая стоимость виртуального хостинга). Обычный сайт требует не очень много ресурсов. Однако если у сайта высокая посещаемость, или для генерации каждой его страницы требуется обработка большого количества данных или сложные вычисления, такой сайт постоянно запрашивает ресурсы у системы. И система, постоянно выделяя мощности для этого сайта, выделяет меньше ресурсов другим сайтам. В результате, если на одном сервере находится несколько «тяжелых» сайтов, все ресурсы системы расходуются на их обслуживание, и практически пропадает возможность уделить достаточное внимание другим сайтам.

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

Почему нельзя ограничивать ресурсы

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

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

Итак, виртуальный хостинг не является решением, предоставляющим ограниченные или гарантированные ресурсы. Таким решением является выделенный сервер или VDS, но не виртуальный хостинг.

Как считается нагрузка

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

Нагрузка на процессор подсчитывается с помощью средств, предоставляемых операционной системой — system accounting. Во время выполнения процесса системой регистрируется, сколько секунд процессорного времени было затрачено для выполнения задачи. Эти данные сохраняются, могут быть просмотрены (во FreeBSD для этого существует утилита sa) и заносятся в базу данных по каждому аккаунту, их можно видеть в панели управления.

Нагрузка на mysql считается похожим способом: с использованием системных средств регистрации потребления ресурсов, только для сбора и извлечения её используется специальное добавление к mysql, фиксирующее использование ресурсов внутренними пользователями mysql (потому что все запросы mysql обслуживает от одного системного пользователя).

Из-за чего возникает нагрузка

Всего чаще из-за того, что для генерации одной страницы сайта требуется проведение большого цикла обработки данных. Обычно это встречается в CMS, у которых сложная структура страниц/категорий/пользователей/шаблонов, и для генерации каждой страницы требуется выборка большого количества данных из базы, последующая обработка этих данных и выведение их по шаблону, парсинг которого тоже требует вычислительных ресурсов.

Самая известная ресурсоёмкая CMS Битрикс , например, часто разрешается хостинг-провайдерами только на специальных тарифных планах и специальных серверах. Ещё одна «тяжелая» CMS Typo3 тоже предназначена для использования не на всех тарифных планах и предъявляет специальные требования к хостингу.

Также нагрузка часто возникает из-за неэффективной логики запросов mysql в скрипте. Например, на странице выводится список из 20 товаров, и для получения списка товаров используется один запрос, результат которого обрабатывается в цикле, в каждой итерации которого производится ещё один запрос (а иногда даже несколько) на каждый элемент списка. Итого получается 21 запрос, хотя, если изучить документацию по базам данных, можно составить всего лишь один запрос, получающий все данные сразу, которые потом можно будет вывести в простом цикле.

Ещё один случай — просто неоптимизированные скрипты, алгоритм выполнения которых является неэффективным: подсчёт заведомо известных данных, не оптимальные методы расчёта, лишние циклы, обработка данных, которые не будут выводиться пользователю, ведение логов, которые никто не будет читать и т.д.

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

Плохая организация сайта может стать причиной лишней нагрузки на сайт. Например, одну и ту же страницу можно получить несколькими разными способами (/index.php?cat=1id=2 или /?id=002&cat=01), и на сайте используются все эти способы. Естественно, поисковые роботы считают такие ссылки разными документами и пытаются получить одну и ту же страницу несколько раз по разным ссылкам.

В конце концов, у сайта может быть просто высокая посещаемость. Тогда высокая нагрузка не является чем-то лишним и поправимым, а становится неотъемлемым свойством сайта. Просто Ваш ресурс вырос и стал популярным, поздравляем.

Анализ нагрузки

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

Второе средство — аудит кода, при необходимости (и уже как часть исправления проблемы) — его рефакторинг, выяснение и документация алгоритмов генерации страниц, поиск и отлаживание медленных мест.

Как избавиться от нагрузки

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

Для снижения потребления ресурсов разработчиками CMS обычно используется система кеширования. В самом деле, нет смысла заново генерировать страницу, которая только что была сгенерирована и отдана другому посетителю – можно сохранить готовую страницу в файл и перегенерировать его только при обновлении данных. Сохранять можно как страницу целиком, так и части её: обработанный шаблон, полученные из базы и сформированные для вывода данные и т.д. Система кеширования может помочь облегчить и самописные движки.

Эффективность запросов/оптимальность — дело тонкое и требует близкого знания предмета. Совет, который здесь можно дать — отдавайте программирование программистам, а проектирование баз данных тем, кто прочитал хотя бы одну книгу по базам данных. Многочисленные учебники в Интернете дают лишь поверхностное понимание, которого недостаточно для создания баз данных даже средней сложности (несколько связанных таблиц). По базам данных мы можем посоветовать книгу Д. Крёнке Создание и проектирование баз данных Хорошая книга о программировании принадлежит Джоэлу Спольски и называется Джоэл о программировании

От прожорливости поисковых роботов может защитить создание файла robots.txt, в котором будет указано, какие разделы сайта подлежат индексации, а какие нет. Это будет полезно и с точки зрения снижения нагрузки на аккаунт, и с точки зрения SEO-оптимизации сайта — гораздо лучше, когда на сайте мало страниц с высокой концентрацией полезной информации, чем много страниц о чём попало с многочисленными повторениями. Подробно о применении robots.txt написано на robotstxt.org.ru.

Также может помочь ограничение доступа неавторизованных пользователей к каким-либо разделам сайта.

Впрочем, не все роботы реагируют на robots.txt, и не всегда на сайте есть «лишние» разделы, да и сайт может быть просто плохо организован. В таких случаях может помочь реорганизация сайта: продумывание навигации, редизайн, повышение структурности и иерархичности размещения информации и т.д.
Если же у Вас просто посещаемый сайт, популярность которого настолько высока, что сайт постоянно оказывает большую нагрузку на сервер виртуального хостинга, мы можем вместе с Вами порадоваться за Ваш успешный проект и порекомендовать разместить на сайте рекламу для оплаты более солидного тарифа или выделенного сервера.

Меры воздействия

К сожалению, мы не можем долгое время ничего не делать при появлении на каком-либо из аккаунтов высокой или критической нагрузки. Мы вынуждены, чтобы предоставить другим аккаунтам ресурсы сервера, каким-либо образом уносить её. Для этого у нас существует несколько специальных серверов, на которые переносятся аккаунты пользователей, сайты которых слишком жадно используют ресурсы сервера. Находясь на одном из этих серверов, пользователь получает возможность отладить свои скрипты, не мешая при этом другим пользователям. На этом сервере, правда, сайты работают медленнее, потому что ресурсы сервера постоянно заняты обслуживанием одного из «тяжёлых» аккаунтов. Практика показывает, что 30-ти таких аккаунтов может хватить для того, чтобы ресурсы сервера были полностью исчерпаны.

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

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

В любом случае, если Вы получили письмо с предупреждением о нагрузке, лучше связаться со службой технической поддержки по адресу support@peterhost.ru и сообщить, что Вы намерены заниматься исследованием и исправлением ситуации, а также согласовать возможные пути выхода из этого положения.

Резюме

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

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

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

Желаем Вашим сайтам высокого рейтинга и высокого качества содержания и кода!


Категории:

загрузка…