Инфраструктура сайта премии Grammy Awards

Представленный материал является русифицированной версией статьи, изначально опубликованной на английском языке в блоге. Несмотря на то, что ссылка на основной блог остается рабочей, исходная статья в нем больше недоступна. Желающие ознакомиться с оригиналом могут связаться с автором публикации, KevinColligan, через Twitter. Автор принимал участие в мероприятии High Performance Drupal meetup, состоявшемся 3 апреля 2012 года/Los_Angeles.

Описание сайта

Grammy.com получил награду "Лучший медиа веб-сайт на Drupal" от Blue Drop Awards. Проект был разработан совместно с Lullabot и дополняет телевизионную трансляцию вручения премии «Grammy» уже более 16 лет. Специально к 54-й церемонии награждения проект обновил дизайн, предложив пользователям больше видео, фотографий и live-трансляций.

Нагрузка на инфраструктуру во время вручения премии

Уникальных посетителей: 6,9 миллионов Просмотров: 30 миллионов Максимальная загрузка балансировщиков нагрузки: 36 Mb/s Количество запросов: 400 запросов в секунду из них 70 приходится на Apache Akamai пиковая нагрузка: 6 269 Mb/s (порядка 738 Мбайт в секунду) Количество запросов к Akamai: около 18000 - 20000 запросов в секунду

Используемое программное обеспечение

Используется Pressflow 6 вместо Drupal, APC для PHP, Memcached, кэширующий реверс прокси сервер Varnish, Apache Solr для поиска.

Pressflow

Преимущества Pressflow:

  • В Pressflow 6 есть все улучшения производительности, как в Drupal 7.
  • 100% совместимость с API и всеми модулями.
  • Включена возможность использования CDN, обратных прокси и вторичных (slave) серверов баз данных.
  • Отсутствуют сессии для анонимных пользователей.

PHP Apc

Преимущества использования APC:

  • APC уменьшает количество операций с диском при парсинге PHP файлов.
  • Хранить полностью отпарсенные PHP файлы в памяти.

Memcached

Memcached мы используем следующим образом:

  • Таблицы кэша и сессий хранятся в памяти.
  • Страницы для анонимных пользователей раздаются из памяти.

Apache Solr

Apache Solr — это Java сервер, позволяющий отделить поиск от Drupal. Он требователен к процессору и мало использует память. Мы размещаем Apache Solr на тех же серверах, где расположен Varnish. Acquia Search &mdash это SAAS версия Apache Solr.

Varnish

Varnish — это быстрый обратный прокси сервер, позволяющий раздавать изображения, файлы и страницы для анонимных пользователей из памяти. В отличии от Solr он использует много оперативной памяти и мало процессорного времени, поэтому мы можем размещать Solr и Varnish вместе. Cookie позволяют направлять авторизованных пользователей на Apache. Varnish обрабатывает 330 из 440 запросов в секунду к нашей инфраструктуре Grammy Weekend.

Оборудование

  • Выделенные серверы Rackspace (в будущем возможно часть инфраструктуры переведем в облака).
  • Балансировщики нагрузки и файрволы.
  • Akamai CDN — более 85000 серверов.

Настройка серверов

 

1-infrastructure-grammy

 

В инфраструктуре Grammy.com используются:

  1. Два сервера баз данных
  2. Шесть веб серверов
  3. Два сервера Varnish/Solr
  4. Балансировщики нагрузки и файрволы
  5. Перед всем этим находится Akamai CDN

Как и Whitehouse.gov, который был запущен ранньше Grammy.com, мы отправляем всех анонимных пользователей в сеть Akamai. Небольшое количество серверов Akamai (порядка нескольких сотен) берут контент с нашего сайта (из Varnish) и далее распространяют этот контент на более 85000 серверов по всему миру. Авторизованные пользователи получают куку, которая позволяет им получать контент напрямую из инфраструктуры Grammy.com, минуя Akamai.

Многоуровневая защита

Основной трафик приходится на Akamai CDN порядка 98% всего траффика Grammy Weekend. Varnish передает кэшированные страницы в Akamai и статику авторизованным пользователям. Memcached хранит результаты запросов к базе данных. Также используется встроенное кэширование Drupal.

Уровень 1: Akamai

Предоставляет сеть доставка контента (CDN), которая скачивает кэшированную версию сайта и распространяет ее через более 85 000 серверов. Анонимные пользователи направляются в Akamai и получают кэшированную версию контента. По умолчанию время жизни кэша составляет 5 минут, но для некотороых часто обновляемых страниц использовает время жизни кэша равное 1-ой минуте

Уровень 2: Varnish

Нами используется 2 выделенных сервера Varnish (и Solr), поэтому контент генерируется максимум 2 раза. Эти серверы отдают кэшированный контент в Akamai и статику для авторизованных пользователей.

Уровень 3: Drupal Cache

Время жизни кэша 1 минута.

Производительность инфраструктуры

Производительность веб серверов

Наши шесть веб серверов были загружены на четверть большую часть ночи Стабильно Apache загружал процессор на 25% (более 5 минут) Всплеск нагрузки Apache процессора доходил до 40% (менее 5 минут)

Производительность базы данных

Обычно, база данных является узким местов в любом динамическом веб сайте. Мы провели большую работу по оптимизации базы данных. Средняя нагрузка была порядка 9%. Максимальное количество установленных MySQL соединений было 605 из 1500 возможных, это порядка 40%.

Производительность Varnish

Varnish содержит порядка 3GB кэшированных объектов (170 000 объектов). Стабильно Varnish загружал процессор на 2%, иногда были всплески до 5%.

Производительность Akamai

Akamai обработал порядка 95,8% всех запросов (страницы, графика и т.д.) На Akamai пришлость 97% всего трафика (порядка 4,7 TB)

Добавить комментарий

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <pre> <br> <h1> <h2 id> <h3 id>
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.