Автор: Михаил Кепман
«Тормозящий» сайт — печальное зрелище. Раньше, когда каналы в Сеть были узкими, о высоких нагрузках и быстродействии мало кто задумывался. Да и конкуренция на интернет-рынке была невелика, так что отток недовольных медлительностью сайта пользователей был маловероятен. Теперь же, с увеличением проникновения широкополосного доступа, сайтостроители стали уделять производительности своих проектов куда большее внимание.
Действительно, мало кто будет ждать загрузки страниц более 2-3 секунд, обладая, к примеру, мегабитной выделенкой. Гораздо логичнее перейти к более скоростному конкуренту, выбор которых на данный момент велик, ведь уникальных проектов, по сути, не существует. Как раз сегодня мы и решили разобраться, откуда же берутся эти ненавистные «тормоза» и как с ними бороться.
Дмитрий Неуймин, руководитель службы заботы о клиентах «Юмисофт», выделил 3 основные фактора, влияющие на скорость работы сайтов. «Во-первых, многое зависит от платформы, на которой написана система, — рассказывает он, — CMS, написанная на PHP3, впоследствии перенесенная на PHP4 и PHP5, будет работать все медленнее с каждым последующим переносом. Кроме того, по определению, к ресурсам требовательны системы, написанные на платформе ASP.NET и JSP». Второй фактор, по мнению Неуймина, связан с недостаточной оптимизированностью кода: «Когда код развивается в течение многих лет разными программистами без оптимизации, он становится тяжеловесным, путаным, раздробленным. К примеру, сейчас код нашей системы гораздо легче, чем у более взрослых систем с аналогичным функционалом. Кроме того, на быстродействие CMS будут влиять также ошибки и просчеты, допущенные при написании кода». Третьим же фактором была названа избыточная функциональность CMS: «Зачастую систему тормозит излишний функционал. Избегая при создании UMI.CMS гиперфункциональности, мы в первую очередь думали как раз о скорости ее работы».
Несколько иной точки зрения придерживается Олег Никитин, представляющий веб-студию «Страта Технологии»: «Основную роль в данном случае играет не язык программирования и не сам код, а архитектура приложения. Естественно, что спроектировать и аккуратно реализовать приложения, работающие под высокой нагрузкой, могут только опытные команды разработчиков, имеющие опыт работ с высокопроизводительными приложениями. В частности, наши специалисты, прежде чем разрабатывать Twilight CMS, принимали участие в проектировании и разработке баннерной системы AdWatch. Мы длительное время работали над системами бронирования авиа и ЖД билетов, где решаются задачи быстрой обработки небольших по объему запросов с доступом к большим внешним хранилищам данных.
Один из самых действенных способов увеличения производительности, рекомендованный компанией Microsoft, — кэширование готовых HTML страниц. Это отдельная предметная область, которая для любого решения, в том числе и для CMS, может быть разбита на две части. Первая — это комплекс мер системного администрирования, например, установка специализированных серверов типа Nginx или настройка системных возможностей серверов Apache и IIS для обеспечения минимальной нагрузки на веб-сервер. Как правило, это может быть в полной мере реализовано только на крупных проектах, где есть возможность установки выделенных серверов. Вторая часть — это механизмы кэширования, реализованные в самих CMS. Здесь каждый разработчик имеет возможность творить что-то свое и придумывать подходы, наилучшим образом сочетающиеся с архитектурой конкретного решения и дающие максимальный выигрыш в производительности. Например, в Twilight CMS за последние три года схема кэширования была переработана трижды. Мы пробовали различные подходы и в настоящий момент остановились на четырехуровневом кэше, с поддержкой частичного кэширования страниц, обрабатываемых в несколько проходов, который позволяет системе удерживать высокие нагрузки в периоды проведения рекламных кампаний нашими покупателями на своих сайтах».
Несмотря на то, что причина неповоротливости сайтов зачастую кроется именно в системе управления контентом, не стоит забывать и о хостинг-провайдерах, способных свести на нет все усилия программистов. «Некоторые хостинг-провайдеры выделяют для одного сервера такие минимальные ресурсы, что на нем не будет быстро работать ни одна система. Нередко мы сталкивались с тем, что у одного и того же провайдера на разных выделенных серверах наша система работала с разной скоростью. Многое, конечно, зависит и от настроек», — рассказывает Дмитрий Неуймин.
Дмитрий Васильев, генеральный дир ектор компании «АИСТ», привел пример такой неудачной настройки: «NetCat очень нетребователен к ресурсам сервера. Но однажды к нам обратился один из пользователей с проблемой, суть которой заключалась в том, что сайт не справляется с нагрузками, хотя количество посетителей исчислялось десятками в сутки. Выяснилось, что разработчик сайта умудрился сделать рекурсивный вызов одного из скриптов, то есть при загрузке страница загружала саму себя, потом еще раз и так далее, пока не «отваливалась» по тайм-ауту».
Подыскивая площадку для будущего сайта, надо помнить, что многие CMS просто-напросто не предназначены для размещения на виртуальном хостинге. «Насколько я знаю, продукт «1С-Битрикс» далеко не на всех хостинг-площадках может работать, но наши коллеги успешно решают эти проблемы, например, предлагая хостинг-провайдерам вводить специальные тарифные планы под «Битрикс». К тому же расширенные требования к хостингу нельзя однозначно считать недостатком продукта. Если сама по себе CMS хороша и решает поставленные перед ней задачи, и пользователь готов переплачивать долларов 20-30 в месяц за хостинг, проблем здесь я совершенно не вижу», — рассказывает Дмитрий Васильев.
По мнению некоторых экспертов, если хостинг-провайдер и оказывает негативное действие на производительность сайта, то исправить эту ситуацию очень легко. «На наш взгляд, хостинг-площадки легко регулируются рыночными отношениями: где плохо работают сайты, оттуда уходят люди, — подчеркивает Олег Никитин. — Кроме того, повлиять как-то на ситуацию с площадкой владелец сайта, по сути, может только на этапе выбора хостинга. Поэтому хостинг при оценке проблем производительности и путей их решения можно в большинстве случаев «выносить за скобки», тем более что поменять один виртуальный хостинг на другой на текущий момент при достаточно низких ценах не проблема.
При небольшой нагрузке на сайт на виртуальных хостингах работать могут все CMS. По официальным данным нагрузочного тестирования, которое публикуют некоторые разработчики на своих сайтах, практически все системы позволяют добиться хороших результатов при работе под высокой нагрузкой при соблюдении определенных условий. Правда, из этих публикаций остаются неясными два момента. Важно понимать, по какому закону нагрузка будет расти при увеличении посещаемости, и будет ли производительность системы падать со временем при разрастании её функционала».
В завершение мы попросили экспертов выделить самые медлительные, по их мнению, CMS, присутствующие на отечественном рынке. Традиционно камни полетели в «Битрикс», хотя заметно, что отношение к этой CMS в последнее время потеплело. «Общеизвестно мнение, регулярно муссируемое на форумах пользователями, что «Битрикс» является одной из самых прожорливых систем и для работы с серьезными проектами на этой CMS требуется выделенный сервер, — рассказывает Олег Никитин. — Хотя то же самое вам порекомендует любой опытный системный администратор для любой веб-системы, поскольку вряд ли можно рассчитывать на то, что серьезный сайт с посещаемостью от 100 тыс. уникальных посетителей в день будет комфортно себя чувствовать на виртуальном хостинге. Поскольку реального опыта работы с конкурирующими продуктами в условиях высокой нагрузки у нас, естественно, нет, то остается опираться на опыт недовольных потребителей (довольные в Интернете редко пишут)».
Дмитрий Неуймин также выделил «Битрикс» как самого медлительного представителя коммерческих CMS. Из бесплатных он назвал популярные Joomla и Drupal, а также менее известную систему MODx. Ну а из наименее требовательных к системным ресурсам CMS он выделил коммерческие NetCat и UMI.CMS, а также бесплатные Shop-Script и SLAED.
Стоит отметить, что зачастую разговоры о медлительности «Битрикс» навеяны стереотипами. В подтверждение этому компания приводит слова Дмитрия Крикова, технического директора компании Masterhost: «1С-Битрикс: Управление сайтом» — многофункциональный продукт с широкими возможностями, но раньше за это приходилось расплачиваться значительной потерей производительности, особенно в случаях, когда за разработку ресурса брался не очень квалифицированный пользователь. Тестирование показало, что в новых версиях «1С-Битрикс» разработчикам удалось устранить узкие места и значительно повысить производительность системы».