Инфраструктура MySpace не справляется с нагрузкой

Социальная сеть MySpace.com является одним из крупнейших сайтов в интернете. За три года количество пользователей выросло с нуля до 140 млн. человек и 230 тыс. новых регистраций в день. Только для хранения профилей используется 65 серверов, но они не справляются с нагрузкой. Инженеры не успевают делать апгрейд.

Журнал Baseline опубликовал подробный технический анализ (baselinemag.com/print_article2/0,1217,a=198614,00.asp) инфраструктуры сайта MySpace.com. Как известно, это один из крупнейших веб-сервисов в интернете, который сейчас спорит с порталом Yahoo за звание самого посещаемого сайта в Сети.

Данная тема интересна еще и потому, что сайт MySpace был создан совсем недавно, в июле 2003 г., и рост его популярности был очень быстрым. По этой причине апгрейд инфраструктуры осуществлялся в экстренном режиме, причем кардинальное обновление серверов происходило уже пять раз.

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

Серверы MySpace работают на программном обеспечении Microsoft и оно, естественно, не справляется с нагрузкой. Пользователи MySpace видят сообщения с ошибками буквально каждый день. По мнению независимых экспертов, в моменты пиковой нагрузки от 20% до 40% попыток авторизоваться на сайте неудачные - в ответ появляется "Unexpected Error". В среднем по интернету этот показатель не превышает 1%. Показатель в 20-40% является неприемлемым для любого коммерческого сайта, но основная аудитория MySpace - тинэйджеры.

Ночью 24 июля 2006 г. сайт MySpace.com и вовсе ушел в офлайн на 12 часов из-за того, что в Калифорнии отключили электричество, а у сайта не было резервного центра хранения данных. Тогда пользователей встречала страничка с извинениями и флэш-игрой, чтобы они могли убить время в ожидании открытия любимого сайта. Что интересно, во время даунтайма количество посетителей было больше, чем в обычный день (по статистике Hitwise). Это говорит о привязанности пользователей, которые снова и снова проверяли состояние своего виртуального дома.

По мнению технических специалистов, инфраструктура MySpace изначально не была рассчитана на такую нагрузку. В отличие от создателей Yahoo, eBay или Google, создатели MySpace из маленькой спамерской компании Intermix Media не предусмотрели возможность масштабирования. Они, очевидно, не были готовы к столь быстрому росту аудитории.

MySpace был создан так. В 2003 году в США приняли антиспамерский закон CAN-SPAM, так что владельцы Intermix Media решили сменить сферу деятельности и открыть собственную социальную сеть. Для создания веб-приложения они наняли программиста Дак Чау (Duc Chau), который и написал первую версию MySpace. Сайт работал на Perl, под веб-сервером Apache и СУБД MySQL. Впрочем, эта программа не понравилась другим программистам Intermix Media, у которых был опыт работы под ColdFusion, поэтому они переписали программу под ColdFusion. Естественно, она теперь работала под Windows и Microsoft SQL Server, а Дак Чау уволился.

Запуск сайта MySpace состоялся точно в тот момент, когда у самой популярной социальной сети Friendster.com начались проблемы с производительностью. Пользователям приходилось ждать загрузки каждой страницы по 20-30 секунд, а разработчики из-за нехватки финансовых средств ничего не могли с этим поделать. Очень быстро все пользователи перешли на MySpace, серверы которого работали вполне сносно.

Изначально сайт MySpace работал всего на двух серверах Dell (по 4 Гб памяти и по два процессора) с одним сервером баз данных. По мере роста входящих запросов докупались новые веб-серверы. Проблемы начались в начале 2004 г., когда количество зарегистрированных пользователей достигло 400 тыс., а сервер баз данных перестал справляться с нагрузкой. Добавлять серверы баз данных не так просто, как веб-серверы, поэтому решили создать связку из трех баз данных SQL Server (одна основная и две копии).

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

Третий апгрейд (3 млн. пользователей) произошел вскоре после второго, поскольку СУБД все равно не справлялась с нагрузкой. В результате было решено создать большую распределенную систему из относительно недорогих серверов баз данных, которую в будущем несложно масштабировать. Дополнительно пришлось переписывать софт для сайта. Это был самый масштабный апгрейд. Для равномерной нагрузки на серверы пользователей "разбили" на кластеры, чтобы каждый сервер баз данных обслуживал по 2 млн. человек.

Когда абонентская база достигла 9 млн. в начале 2005 г., инженеры начали миграцию с серверов ColdFusion на новую версию веб-софта, написанную на Microsoft C# и работающую под ASP.NET. Сразу же оказалось, что под ASP.NET программы работают гораздо эффективнее. На новом коде 150 серверов делали ту же работу, что раньше 246. Кроме того, была установлена новая профессиональная система хранения данных, выдерживающая большую нагрузку. Чуть позже (на 17 млн. пользователей) в систему был добавлен еще один ряд кэш-серверов, посредников между веб-серверами и серверами баз данных.

Последний апгрейд MySpace состоялся в середине 2005 г. (26 млн. пользователей), когда была осуществлена миграция на новую СУБД SQL Server 2005, еще во время ее бета-тестирования. Такая спешка объясняется тем, что эта была первая версия SQL Server, поддерживающая 64-битные процессоры с возможностью расширенной адресации к памяти. А память тогда как раз являлась узким местом в инфраструктуре MySpace.

Хотя с тех пор прошло полтора года, а количество зарегистрированных пользователей выросло до 140 млн., больше никаких глобальных апгрейдов не проводилось. Как раз в середине 2005 г. медиамагнат Руперт Мердок купил MySpace за $580 млн. Это была выгодная сделка, потому что сейчас стоимость сайта возросла примерно до $6 млрд. (по словам того же Мердока). В 2007 г. сайт должен принести $400 млн. дохода, в основном, от показа рекламы.

Неудивительно, что инфраструктура MySpace до сих пор дает сбои. Программное обеспечение Microsoft не выдерживает нагрузки, на которую оно не рассчитано. В ноябре 2006 г. сайт преодолел граничный лимит SQL Server по количеству одновременных соединений. Серверы Windows 2003 иногда отключаются из-за предельной нагрузки.

В середине 2007 г. планируется очередной апгрейд MySpace: создание распределенной системы хранения данных, чтобы не зависеть от дата-центра в Лос-Анджелесе.

Стандартный сервер баз данных (их сейчас 65 штук) основан на базе сервера HP 585 с четырьмя двухъядерными 64-битными процессорами AMD Opteron и 64 Гб оперативной памяти (недавно увеличили с 32 Гб). Операционная система Windows 2003, Service Pack 1, СУБД Microsoft SQL Server 2005, Service Pack 1. Сетевая карта на 10 Гбит/с.

Инфраструктура MySpace
Задача Продукт Производитель
Технология веб-приложений Microsoft Internet Information Services, .NET Framework Microsoft
Операционная система на серверах Windows 2003 Microsoft
Язык программирования и среда Приложения на C# для ASP.NET Microsoft
Язык программирования и среда Изначально сайт был запущен под Adobe's ColdFusion, сейчас оставшийся код ColdFusion работает под New Atlanta's BlueDragon.NET Adobe, New Atlanta
СУБД SQL Server 2005 Microsoft
Хранение данных 3PAR Utility Storage 3PARdata
Ускорение интернет-приложений NetScaler Citrix Systems
Серверы Стандартные HP 585 Hewlett-Packard
Рекламный движок DART Enterprise DoubleClick
Поисковый движок и контекстная реклама Google search Google

Анатолий АЛИЗАР

Версия для печатиВерсия для печати

Номер: 

04 за 2007 год

Рубрика: 

Internet
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!