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

    Журнал Baseline опубликовал подробный технический анализ инфраструктуры сайта 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 часов (в Калифорнии случился блэкаут, а у MySpace не оказалось резервного центра хранения даных). Тогда пользователей встречала страничка с извинениями и флэш-игрой, чтобы они могли убить время в ожидании открытия любимого сайта. Что интересно, во время даунтайма количество посетителей было больше, чем в обычный день (по статистике 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 начались проблемы с производительностью. Пользователям приходилось ждать загрузки каждой страницы по 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 неожиданно отключались: у них ложно срабатывала встроенная защита от DoS-атак.

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

    Инфраструктура 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


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

    Комментарии 56

      0
      Очень интересно было почитать, спасибо!
      В избранное ;-)
        +1
        Дайте координаты Дак Чау (Duc Chau), сделаем аналог на
        на двух серверах Dell (по 4 ГБ памяти и по два процессора)

        Спасибо за статью, не всегда наращивание серверной мощности
        лучше чем проф. разработчики.
          +1
          "бутылочным горлышком" = "узким местом"
            0
            Самое время менять инженеров
              –2
              поставили бы nginx, а БД лучше бы оракл под солярку
              и было бы им счастье :)))
                0
                bebo.com кстати с Ораклом и работает
                0
                а может тут кто-нибудь из hardware-people хотя бы в очень первом приближении посчитать сколько бы сэкономили на "железе", если бы не уволили perl-coder'a и остались бы на Unix-рельсах в разработках? Понимаю, что сложно, но выше люди вот бросаются весьма интригующими заявлениями о двух Деллах ))
                  –2
                  Это они по глупости или по наивности бросаются.

                  LJ работает на Perl, имеет нагрузку на порядки ниже и использует серверов существенно больше, чем 2.
                  Да и дело-то не в количестве серверов. А в том, что такие нагрузки никто ещё не переваривал и решений не находил.
                  +2
                  я думаю вариант сервера от майспейс не самый быстрый.
                  думаю java + resin server + oracle будут быстрее.

                  статься очень полезная. спасибо
                    0
                    Это ничего =)
                    С опытом зависимость скорости работы ПО от среды разработки пропадает =)
                    Думаю, там нужна уже какая-то другая архитектура, а не платформа. Если бы архитектура была фиговой, они бы не дошли до 140 миллионов юзеров. Это очень большая цифра и пока ни у кого с динамическим контентом её нет, чтобы померяться членами.
                      0
                      140 млн. это число зарегистрированных юзеров, я так понимаю? Если да, то ета цифра мало что говорит о количестве конкурентных полльзователей. Насколько мне известно, MySapce далеко не на первом месте, по количеству посещений.
                        +1
                        Именно на первом. Во ВСЁМ инете.
                          0
                          Источник в студию
                            0
                              0
                              Судя по самой статье и некоторым другим (http://www.techcrunch.com/2006/12/12/its…), заявление весьма спорное. И уж тем более речь не идет о тотальном превосходстве, которое исключает возможность "померяться письками". :)
                                +1
                                На самом деле меряться можно сколько влезет, не об этом речь.
                                Просто прикольно, что всего _65_ серверов бд обслуживает 140M юзеров. Слов нехватает, чтобы выразить восхищение этими программерами...
                                  0
                                  По два с копейками миллиона на сервер. 7 слов.
                                  Мне было бы интересно узнать, сколько из этих 140М дубликаты, сколько лежат мертвым грузом, короче, сколько реально юзеров MySpace обслуживает, сколько запросов в секунду, много всяких "сколько", перед тем как начать восхищаться. 140М это больше половины населения США.
                                    0
                                    Огромное количество инфы по любому. Одна текстовая инфа профилей 2х мильёнов человек будет весить 4 гига (если взять по минимуму, 2кб на рожу). И запись этого юзера будет сказу в ста таблицах с форин кеями и прочим гэ. Какое-то количество из них конечно неактивные, но ведь не 50%, блин. А там ещё и постов навалом (даже если 1 пост в день, по факту конечно больше).
                                    И эту туеву хучу инфы нужно показать! Например ноябрь 2006.
                                    38 700 000 000 - показов
                                    /
                                    65 - серверов
                                    /
                                    30 - дней
                                    =
                                    19 846 153,85 показов в день (или 5 512,82 показов в секунду) обрабатывал один сервер. Учитывая, что даже мерсский DonNetNuke, который почти ничего не умеет по сравнению с myspace, умудряется тормозить бд при ~150 запросах в секунду (проверено HttpLoad'ом на не самом слабом серваке, IIS и MSSQL2005 - разные сервера, 100mbit), то тут уж грех не повосхищаться местными пейсателями!
                                      0
                                      А мой калькулятор считает так:
                                      19 846 153,85 / 24 / 60 / 60 = 229,7 (показов в секунду) В среднем за сутки естественно.
                                      Вопрос: сколько из этих показов реально приводят к запросу в базу? (при наличии системы кеширования)
                                        0
                                        1. У тебя неправильный калькулятор :) В смысле я хотел посчитать в минуту, но всё равно ошибся :)
                                        2. А вот этого мы уже на арифмометрах не вычислим :)

                                        Я тут подумал, ведь ТАКОЕ среднее за день нерепрезентативно ни разу. 8 ночных часов из суток можно вообще выбрасывать легко ибо траф на порядок меньше должен быть, да и секунда секунде (равно как и минута минуте) рознь.
                                          0
                                          Вы конечно же думали именно о "нерепрезентативности", представляя свои вычисления.:)
                                          Мне почему-то кажется, что нагрузка в течение суток распределяется по нормальному закону. Но, честно говоря, меня это не особо волнует.

                                          У меня лично складывается такое впечатление, что кто-то искусственно пытается завысить показатели MySpace. Как будто ребята из бывшей спамерской конторы поставили себе цель обскакать Яху. Вот захожу я к ним и в упор не вижу ничего такого, что заставит меня остаться на сайте еще хоть 10 секунд. Это, конечно, все IMHO.
                                            0
                                            У какой из нагрузок закон распределения "более нормальный"?
                                            DRIVE.RU
                                            MEMBRANA.RU
                                            Вы не знаете о существовании ямы, Вас это не особо волнует, так с какого это перепугу Вам будут давать ответы по существу, если Ваши вопросы и высказывания к этому существу не имеют отношения?
                                              0
                                              1. Нормальный закон распределения сам по себе предполагает наличие ямы.
                                              2. Вас никто не заставляет отвечать на мои вопросы. Более того, столь истерический тон Ваших высказываний может отбить любое желание задавать эти самые вопросы.
                                                0
                                                Именно этого я и хочу =)
                                                  0
                                                  С этим пожалуйста к жене, подруге, психоаналитику, в центральную прачечную.. но не ко мне.
                                                    0
                                                    Да что Вы говорите =)
                                                    А что ещё мне срочно надо сделать?

                                                    Научитесь связывать причину и следствие, подтренируете память, перестанете писать бестолковые вопросы и вуаля - необходимость обижаться на окружающих отпадёт.
                                    0
                                    140М зарегистрированых пользователей не значит что их там столько использующих MySpace.
                                    Многие могли зарегистрироваться, зайти раз и все...
                                    И теперь они весят мертвым грузом по серверам СУБД
                                0
                                Вообще "g 2006 myspace yahoo"
                                  0
                                  Вы статью-то читали, которую мы обсуждаем?
                                  Удивлён, что renny с Вами спорит... Какой смысл спорить с человеком, который о предмете спора слышал звон и незнает где он, да ещё рассуждает о вкусе устриц, ни разу их не попробовав.

                                  Смена калькулятора Вам не поможет. Потому что чтобы правильно считать, надо иметь прямые руки и кормить калькулятор правильными данными.
                                    0
                                    Ответ по существу. Спасибо.
                                      0
                                      Ответы по существу имеет смысл писать тем, кто даже если не разбирается в вопросе, то хотя бы читает, чего обсуждают.
                                      Вы и не разбираетесь и не читаете.
                            +1
                            Java??? Да ладно, вы писали высоконагруженные приложения на Java? Как она любит кушать память... Если не отказаться на Java от всех вкусностей ООП это будет еще тот тормоз...

                            Дело не в языке или базе данных, дело в грамотной архитектуре.

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

                            Архтитектура и еще раз архитектура...
                              0
                              А Вы писали?
                                0
                                Да, принимал участие в проектах
                            0
                            Перевод статьи фиговый. Windows Server 2003 падал по описанным (и исправленным) в оригинале причинам, а сайт лежал 12 часов из-за отсутствия питания в датацентре.

                            Про лимит соединений с MSSQL-сервером просто песня - хотел бы я посмотреть на какой-нибудь SQL-сервер, не имеющий лимита на соединения =)
                              0
                              исправили (+ про блэкаут, + про ложное срабатывание от DoS-атак), спасибо
                                0
                                Да дело-то не в этих недописках. А в том, что вы слишком уж не любите MS =) Писатели оригинала тоже не любят. В итоге и получилось ваше резюме "Неудивительно, что инфраструктура MySpace до сих пор дает сбои. Программное обеспечение Microsoft не выдерживает нагрузки, на которую оно не рассчитано."
                                Которое к реальности имеет отношения столько же, сколько бахвальство "мы на двух Деллах заставим работать MySpace, дайте только нам использовать не-MS".

                                Не удивлюсь, если причина была не в MSSQL, а в том, что количество портов для клиентского адреса имеет ограничение в 48к.
                                .NET провайдер SQLServer для ADO.NET не умеет выбирать для клиентского адреса другой IP. Поэтому, когда количество коннекшенов открывается и закрывается приличное, начинаются проблемы от ограничениями TCP, которые к платформе никакого отношения не имеют и будут проявляться хоть на Linux, хоть на FreeBSD - остальные провайдеры данных (например, DBI в Perl) точно так же не умеют выбирать для клиентского адреса другой IP.
                                Очевидно, что для воспроизведения этой ошибки понадобится похожее железо - высокая процессорная мощность и высокая производительность сети. На двух CPU и Ethernet 1Гбит я пробовал, не получилось.
                                  0
                                  А, ещё я забыл добавить, что 48к портов это максимум, сколько можно поставить. По умолчанию на Windows 2003 прописано 4к.
                                –2
                                Вот это рост популятности, только успевай добавлять количество серваков, увеличивай мощность каналов и т.п.
                                  0
                                  Стандартная дилемма в разработки софта: или потратить деньги и время(!) на проектирование системы, чтобы потом её планомерно без авралов масштабировать, или не заморачиваться и быстрее запускаться и ввязываться в бой. Любой из вариантов может быть как проигрышным так и выигрышным. MySpace не парился на длительные обдумывания и запустился. Криво, косо, без дизайна, с глюками, но пенсию основатели себе обеспечили. А кто-то долго все делал круто и красиво и сидет теперь с никому не нужной крутой системой.

                                  Хотя этот промер просто замечательная иллюстрация для выбивания денег с клиентов на нормальное проектирование :)
                                    +2
                                    Интересно: общее число серверов на данный момент не указано, но судя по цифрам "65 серверов баз данный сейчас" и "150 серверов всего до апгрейда", можно предположить что их не больше пары сотен и сейчас. А при таком числе говорить о недостатках архитектуры как-то странно, ибо в сравнении с тем же Гуглом, число серверов которого оценивается в 200 тысяч! (информация, правда, не подтверждённая), и который как теперь оказывается, вовсе не является самым посещаемым сайтом в мире*, это очень мало.
                                    Понятно, что у Гугла нагрузка гораздо выше — ему и индесировать весь интернет нужно и сервисы типа Google Earth наверняка дают нагрузку на одного пользователя намного большую нежели все социально-контентные фичи Myspace вместе взятые. Но всё же факт остаётся фактом: самый посещаемый веб-сайт интернета живёт на менее чем 1000 серверов, в то время как третий (условно, но думаю что врядли кто-то ещё пробрался между Яху и Гуглом) по популярности — на 200 тысячах. Опять же число дата-центов — 1 у Myspace против 23 у Гугла. Странно в таком контексте говорить о неудачном выборе ПО, ой как странно.

                                    * сноска: Кстати, тот факт что Гугл вовсе не является самым посещаемым сайтом в мире опять же был очевиден не сразу, я-то ещё недавно наивно полагал что являясь лидером по поиску (49% запросов в США по сравнению с 23% у Yahoo) он должен лидировать и в общем зачёте, однако поискав инфу и выяснив что у Яху поиск занимает 11% против 49% почты, а у гугла наоборот, 69% против 10%, убедился что поиск далеко не так важен, чем был немало удивлён.
                                      0
                                      Говорят Google использует не то, что принято называть "серверный компьютер" т.е. не дорогие/надёжные/производительные компьютеры, а более дешёвые и сходные с домашними компы но в больших количествах. Так же говорят, что это позволяет им меньше зависить от конкретных производителей и за меньшие деньги получать большую производительность.
                                        0
                                        Да, ещё где то писали, что у Google всё сильно индивидуальное т.е. и файловая система и возможно даже ОС подогнанная под их задачи с максимальным быстродействием.
                                        Всё таки продукция MS это универсальные изделия которые никогда не смогут быть так же производительны как узкоспециализированные. Наверняка используй Myspace решения на Oracle и специальную сборку unix у них было бы меньше проблем.
                                          0
                                          Вы действительно полагаете, что слово "универсальные" тут уместно?:)
                                            0
                                            Не упоминайте Oracle в суе :) Тем более в контексте более высокой производительности. На тех железках, на которых Oracle нормально работает, можно поставить с десяток MS SQL и с пару сотен MySQL. Да и используй MySpace Oracle им бы Мердок еще на стадии "гаража" потребовался.

                                            Про архитектуру Google.
                                              0
                                              стадия "гаража" это 5!
                                            +1
                                            Я вообще этот очередной наезд в статье на Microsoft оставил без внимания. Одна фраза "Неудивительно, что инфраструктура MySpace до сих пор дает сбои. Программное обеспечение Microsoft не выдерживает нагрузки, на которую оно не рассчитано" чего стоит.

                                            Если верить статье, то MySpace делался на любительском уровне и то, что он сейчас жив при таком огромном траффике, это скорее плюс к платформе Microsoft, чем минус.

                                            Да и замечательно, что SQL 2005 в таких боевых условиях испытывается.
                                              0
                                              Есть ощущение, что им под эту задачу не то чтобы бесплатно SQL 2005 дали, а еще и доплатили, чтобы испытать таким образом.
                                                0
                                                Наликом не доплачивали, у Мердока денег хватает )

                                                А вот консультаций бесплатных я думаю они получили на круглую сумму.
                                                  0
                                                  Коммерческое использование нерелизов MS запрещено лицензией. Исключение сделали только для VS2005beta.
                                                  Так что как-то они договаривались, это однозначно.
                                                    0
                                                    Не только для VS2005.

                                                    Сейчас многие продукты MSFT на стадии близости к релизу доступны с лицензией Go-Live, позволяющей использование в коммерческих проектах.

                                                    Туда же можно отнести и разнообразные программы взаимодействия с различными уровнями ISV a-la TAP, и других форм early adoption programs (вплоть до внутренних соглашений с партнерами).
                                                      0
                                                      Когда SQL Server 2005 был бетой, то только для VS 2005.

                                                      Про сейчас не знал, спасибо.
                                                  0
                                                  Полностью поддерживаю!
                                                0
                                                Спасибо за интересную статью. Сам собираюсь в скором времени запускать социальную сеть, интересно почитать про ошибки других.

                                                Насчёт технологий Microsoft: не согласен с автором. Я сам работаю веб-разработчиком, ежедневно пишу на ASP.NET, использую MSSQL 2005, раньше довольно долго работал с PHP и MySQL, так что могу утверждать, что для больших проектов PHP не слишком хорошо подходит. Хотя это и моё мнение.
                                                  0
                                                  спасибо за статью!
                                                    0
                                                    Раз такую тему апнули :)
                                                    Почему-то не упоминается Isilon, здесь лежит видео где человек рассказывает о том как они масштабировались, как базу делили, как хранилище выбирали
                                                    Isilon много кто использует... у кого деньги есть :)

                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                    Самое читаемое