Перевод презентации Kevin Colligan (@kevincolligan) c High Performance Drupal meetup on April 3, 2012.
В презентации описана текущая инфраструктура, используемая для сайта GRAMMY.COM, позволяющая ему работать быстро и надежно.
Описание сайта
GRAMMY.com получил награду от Blue Drop Awards как "Лучший медиа веб-сайт на Drupal".
Grammy.com разработан совместно с Lullabot. Grammy.com дополняет телевизионную трансляцию вручения премии Грэмми уже более 16 лет. Для пятьдесят четвертого вручения премии Grammy был подготовлен новый дизайн сайта, выложено больше видео, фото, live включений в трансляции.
Нагрузка на инфраструктуру во время вручения премии Grammy
Уникальных посетителей: 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 серверов.
Настройка серверов
В инфраструктуре Grammy.com используются:
- Два сервера баз данных
- Шесть веб серверов
- Два сервера Varnish/Solr
- Балансировщики нагрузки и файрволы
- Перед всем этим находится 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)