Виртуальный хостинг разделения ресурсов
Итак, что же такое виртуальный или иногда говорят «разделяемый» (англ. shared) хостинг?
Фактически, это услуга, предлагаемая хостинг-провайдером, подразумевающая размещение
интернет-сайта на сервере, на котором одновременно может работать несколько десятков, а
зачастую и несколько сотен других интернет-сайтов. Ресурсы сервера фактически разделяются в
каждый конкретный момент между всеми пользователями. Именно за счет этого, стоимость
виртуального хостинга невелика, и он доступен для основной массы клиентов и сайтов.
«На виртуальном хостинге на одном физическом сервере размещается достаточно
большое количество сайтов, в подавляющем большинстве принадлежащих разным
пользователям и использующих различные технологии. При этом обычно используется
единый набор базового программного обеспечения с некоторыми унифицированными
настройками, призванными обеспечить и оптимизировать работу
среднестатистического интернет-ресурса. Это позволяет обеспечить необходимый
набор функционала и достойную производительность для всех размещаемых на
сервере проектов не очень большой ресурсоемкости за относительно низкую цену.
Необходимо осознавать, что конфигурации, сделанные с ориентиром на среднестатистический
интернет-сайт, далеко не всегда являются оптимальными для конкретного ресурса. И если для
простейших проектов начального уровня эта разница обычно не заметна, то на более серьезных
проектах специализированная конфигурация программного обеспечения позволяет получить
достаточно высокий прирост производительности и существенное снижение создаваемой
нагрузки.
Поэтому в случае размещения проекта на виртуальном хостинге особенно важно выбирать
тарифные планы, максимально адаптированные под использование именно такого программного
обеспечения и технологий, на базе которых осуществляется разработка проекта».
Обычно, хостинг провайдеры заполняют пользователями сервер за сервером, оценивая
используемость ресурсов. Как только загруженность сервера достигает установленных показателей,
сервер закрывается для новых регистраций и пользователи начинают регистрироваться на новом
сервере. Если некоторые проекты «вырастают» и у них возникают проблемы с производительностью,
их переводят на другой такой сервер, загруженный меньше. Всего таких серверов может быть очень
много. Администраторы всей этой системы постоянно следят за производительностью каждой
машины, и при необходимости, незаметно для клиентов, осуществляют балансировку нагрузки,
перенося сайт с сервера на сервер.
Понятно, что проблемы клиентов виртуального хостинга проистекают из самой его архитектуры. Мы
имеем некоторое подобие коммунальной квартиры. Если кто-то шумит, его слышат все и не могут
заснуть.
Точно также обстоят дела с сайтом на виртуальном хостинге. Стоит одному из клиентов провести
масштабную рекламную кампанию, и автоматически это приводит к резкому, пикообразному
увеличению количества посетителей, приходящих на его сайт. Это естественно сопровождается
существенной нагрузкой на весь сервер, и в результате, «тормозит» и интернет-сайт самого
рекламодателя и все сайты-соседи. Точно также обстоит дело при ресурсоемких операциях,
выполняемых на сайтах. Например, импорт каталога из «1С» или резервное копирование базы
данных.
Еще одна проблема хостинг провайдеров — это DDOS-атаки.
Одним словом, несмотря на усилия хостинг-провайдера сбалансировать выделяемые сайтам ресурсы,
виртуальный хостинг не может гарантировать стабильной производительности. Но для
большинства проектов такие гарантии не всегда нужны.
Некоторые технические особенности виртуального хостинга
Второй вопрос, который требует отдельного рассмотрения — каким образом размещение проекта на
виртуальном хостинге влияет на функционирование системы управления интернет-проектом? Ведь
на сегодня уже понятно, что большинство современных ресурсов используют различные скрипты и
базу данных для генерации страниц.
А ситуация заключается в том, что поведение одного и того же программного кода может
принципиально отличаться для выделенного сервера или для виртуального хостинга. За
счет чего?
Например, на выделенной машине база данных и запросы к данным кешированы. Т.е. обычный
select * from b_lang таблицы с двумя строчками данных выполняется за 0.000ХХ секунды. Так как
данные просто уже в памяти базы данных и не требуется выполнять медленную операцию чтения
данных с диска.
На виртуальном хостинге сотни пользователей обращаются к базе данных и, учитывая, что кеш базы
данных умеет вытеснять редко используемые данные, получается, что этот простой запрос
выполняется каждый раз в десятки раз медленнее. Просто потому, что базе данных нужно
прочитать данные с диска.
Аналогичная ситуация с файлами PHP или статическими файлами. Когда происходит вызов метода
include, PHP-скрипт читается файл с диска. На выделенной системе этот файл в файловом кеше и
читается быстро. Как результат, время выполнения скрипта, а в него все включается и парсинг и
чтение файла и исполнение, будет минимальным. На виртуальном хостинге опять же принципиально
другая ситуация, каждый файл будет читаться с диска, процессора не будет хватать для быстрого
парсинга. Причем получается, что чем меньше посещаемость сайта, тем больше проект вытесняется
из кеша базы данных и файлового кеша и тем медленнее работает.
Очевидно, что в этих условиях требуется каким-то образом предотвращать медленные операции
запросов к файловой системе сервера: либо напрямую, либо используя СУБД.