Производительность динамических сайтов и их размещение на хостинге

Существует два типа страниц/документов (в терминах вебсайтов):

  1. статические – представляют собой файлы, которые http-сервер отдает клиенту (т.е. тому, кто смотрит сайт) напрямую;
  2. динамические – формируются на стороне сервера из разных кусочков информации с помощью server-side программ (например, на PHP).

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

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

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

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

Неизвестность, во-первых, происходит из-за неизвестности кол-ва ресурсов выделяемых сайту на хостнге. Принцип дешевых хостинговых планов со скриптами таков: разместим 500 сайтов на железном сервере, пообещаем всем безлимитный трафик, а дальше будем надеяться, что 499 сайтов будут малонагруженными, а одного клиента, который «положит» сервер кривым скриптом, вежливо попросим уйти. Эти надежды не всегда сбываются.

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

Поэтому на многих форумах вебмастеров можно прочитать жалостливые истории о том, как Вордпресс (Wordpress) с парочкой кривых плагинов убивает Xeon с 8Гб памяти на относительно небольшой посещаемости.

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

Эта заметка из серии «Разработка и обслуживание маленьких сайтов»

Избранное
Из недавнего

© Artem Kuroptev, 2005-2011.