Секреты высокопосещаемых WordPress блогов

Мы все знаем, WordPress потрясающий — но быть потрясающим не всегда достаточно. Хорошо ли он работает под нагрузкой? Справиться ли он с трафиком генерируемым миллионами посетителей каждый месяц? Нет сомнений, что WordPress может быть использован для вашего или моего блога, но как насчет многоавторских блогов с тысячами комментариев? Как разработчики масштабируют и демонстрируют его эффективность?

Я разговаривал с разработчиками стоящими за некоторыми из самых больших WordPress блогов на планете, и попросил их рассказать мне свои секреты. Теперь я готов поделиться ими с вами.

блоги

Сайт Ежемесячно уникальных посетителей Ежемесячно простмотров страниц
Digital Trends 10 — 12 миллионов 33 миллиона
iPhoneclub.nl 2,5 миллиона 5.4 миллиона
The Next Web 4 миллиона 8 миллионов
Neatorama 2,5 миллиона 4.5 миллиона
Slashgear 6 миллионов 10 миллионов
Hot Air 2 — 3 миллиона 35 — 45 миллионов
Laughing Squid Необъявлено Необъявлено

В САМОМ НАЧАЛЕ

Первое, что я спросил у разработчиков были ли они готовы к тому количеству трафика, что теперь проходит через их сайт. Почти во всех случаях ответом было громогласное нет. Как сказали представители The Next Web, а именно, технический директор Арьен Шат и ведущий разработчик Пабло Роман, они планировали рост, но не ожидали, что рост будет происходить так широко масштабно. ”В то время существовало несколько крупных WordPress сайтов, таким образом, мы учились по мере продвижения”.

Neatorama стартовала в конце 2005 года на дешевом виртуальном хостинге, пока их не выгнали. Они переехали на VPS и их снова выгнали. В 2007 году он переехал на выделенный сервер с CDN, которого в конечном итоге было недостаточно, пока, наконец, они не переехали на сервера с балансировкой нагрузки и CDN. Подобные истории повторяются и для iPhoneClub.nl и для Laughing Squid.

Разработчик Hot Air,  Марк Джакуит (Mark Jaquith), а также ведущий разработчик WordPress, был вынужден перенести сайт на новый сервер в течение 48 часов после запуска. Только SlashGear спланировал увеличение трафика на 30% в год.

Digital Trends

Digital Trends начали с около миллиона уникальных посетителей в месяц, с тех пор их число возросло до 10 до 12 миллионов уникальных посетителей. Том Уилмотт, из  Human Made, студии разработчиков стоящей за Digital Trends, так высказался о начинании:

Когда я начал работу на сайте, имелись некоторые довольно серьезные проблемы с производительностью в базе кода, которые требовалось устранить. Однако на чистой базе кода далеко не уедешь. Я не думаю, что это то, на чем следует слишком сильно сосредотачиваться  в самом начале, поскольку вы не знаете, для каких конкретных функций будет нужно рассмотрение производительности. Хорошие навыки написания кода, плюс немного потоянного кэширования объектов достаточно для начала.

Сервер рвет и мечет

Высоко посещаемые блоги имеют дело с тем, что обычным блоггерам и не снилось: полным-полно посетителей, жаждущих, прочитать все последние новости. Neatorama выстоял когда он был показан на первой странице Digg, но был порван в течение нескольких минут после размещения на главной странице Yahoo, хлынуло более 2 миллионов посещений в промежутке нескольких часов. Чтобы справиться с этим, он должен был делать статические страницы на CDN и перенаправлять трафик туда.

Другие блоги встречаются с проблемами, связанными с знаменательными событиями. Посетители стекаются на свои веб-сайты, чтобы следить за тем, что происходит и услышать новости. iPhoneClub.nl и SlashGear особенно страдают во время прямых трансляции Apple. SlashGear испытывает на себе трафик более 4 миллионов уникальных посетителей в течение двух часовой трансляции ; чтоб справиться с этим, он добавляет Amazon EC2 к своей нормальной инфраструктуре.

iPhoneclub.nl

Жану-Полю Хорну, чей iPhoneclub.nl стартовал на WordPress 2.0.5, пришлось научиться справляться с этими проблемами на лету:

Для запуска мы использовали стандартный LAMP стек с WP Super-Cache, поскольку сайт уже достаточно быстро рос, на тот момент когда iPhone начал становиться действительно популярным. Наша главная проблема была в том, что сервер прекрасно работал на обычные новостные дни, но почти буквально сгорал, когда Apple оглашал основные события или другие важные объявления связанные с iPhone. Мы старались подготовиться к этим коротким лавинам временно добавляя больше ядер и оперативной памяти, но ее никогда не было действительно достаточно, и я был не очень заинтересован инвестировать в большую задницу под названием сервер, ради всего двух-трех дней безумного количество веб-трафика в год.

Несмотря на переход к архитектуре при которой веб-сервер и сервер баз данных MySQL размещены на отдельных серверах, что помогает справиться со все продолжающимся ростом, возникали те же самые проблемы, когда компания Apple проводила пресс-конференции. Тут появляется Фредерик Таунс автор W3 Total Cache и знаменитость Mashable. Жан-Поль встретился с Фредериком на конференции WordCamp в Нидерландах, и Фредерик согласился помочь им создать их текущую конфигурацию:

  • Сервер приложений хостит Varnish фронт-енд.
  • Они используют два веб-сервера Nginx: один с PHP-FPM, другой со статическим содержимым, таким как CDN.
  • Сервер базы данных использует высокооптимизированный MySQL сервер, в котором некоторые из этих таблиц WordPress, такие как wp_posts, перемещены из MyISAM в InnoDB. Поскольку InnoDEV не имеет полнотекстового поиска, был реализован Sphinx поиск.
  • Анализ производительности проводился с использованием cachegrind файлов, которые генерирует отладчик XDebug для упрощения определения времени выполнения возможностей оптимизации, что предохраняет серверы от работы вхолостую и устраняет промахи кэша быстрее.

Жан-Поль использует эту конфигурацию с ноября 2011 года и она пережила два крупных мероприятия Apple, без прежних проблем с загруженностью или других неприятностей с производительностью. Они также смогли обслужить больше трафика и побили все свои предыдущие рекорды трафика.

справляясь с ростом

Hot Air

Hot Air

Американский политический блог Hot Air пережил несколько основных забегов повышения производительности и масштабирования, особенно в преддверии года выборов в США. Выборы гарантируют большую, чем обычно вспышку активности вокруг политики. Учитывая, что политика уже является одной из самых популярных тем в интернете, это означает хардкорное масштабирование. Марк Джакуит объяснил мне, предпринятые им шаги, чтобы справиться с масштабированием:

  • Доставка всего статического контента через CDN.
  • Настройка средства балансировки нагрузки, с несколькими бэк-енд серверами стоящими за ним.
  • Предупреждающее кэширование главной страницы
  • Предупреждающее кэширование фрагментов страницы (например, боковых панелей), таким образом они могут загружаться статично
  • Предупреждающее кэширование последних сообщений (в основном тех, которые отображаются на главной странице). Каждый раз, когда пост обновляется или добавляется комментарий, фоновый процесс создает новый статический снимок страницы и распространяет его по веб-машинам .
  • Ликвидация различий между кэшем вошедшего в систему и анонимного посетителя. Большинство плагинов кэширования не кэшируют страницы для зарегистрированных пользователей, или если они делают это, то они кэшируют различные версии для каждого посетителя. Шаблоны Hot Air изменены таким образом, что нет никакой разницы в HTML коде для вошедшего в систему и анонимного пользователя, поэтому может быть использован один общий пул кэш-памяти.
  • Использование Batcache (с использованием Memcached для кэширования объектов в бэк-енде) для кэширования отображений старого контента.

The Next Web

The Next Web

Как и в случае с большинством из этих других блогов, масштабирование было навязано The Next Web. Основатели конечно подготовили план роста, но не в тех масштабах с которыми они столкнулись. Арьен и Пабло рассказали кое-какие подробности о том, как они справлялись с этим.

Основными инструментами команды были:

  • Varnish в качестве обратного прокси-сервера и ESI (Edge Side Includes);
  • Memcached для хранения результатов тяжелых запросов, таких как популярные истории;
  • Munin для мониторинга.

Однако, установки всего этого было недостаточно. Все это должно было быть настроено, и должны были быть определены плохо работающие плагины и код. Чтобы сделать это, они предприняли следующее:

  • Использовали журнал медленных запросов MySQL с включенным параметром no-indexОчень важно чтоб ваш журнал медленных запросов MySQL был пуст. Ваш ключевой кэш внезапно может оказаться больше недостаточным , если объемы ваших данных растут.
  • Использовали XHprof для анализа ветвей кода.
  • Старались оставлять журналы Apache чистыми. Внешние источники будут ссылаться на страницы вашего сайта, которых больше не существует. Если каждый раз загружается страница 404 ошибки WordPress, то вам сервер делает работу, которую можно избежать. Создание страницы 404 может быть тяжелым, поэтому она должна быть доступна для кэширования при помощи Varnish, например.

Команда The Next Web использует также дополнительные инструменты вместе с Varnish для улучшения скорости работы кэш-памяти. К ним относятся:

  • varnishtop Позволяет просматривать содержимое Varnish.
  • varnishtop -i txurl Показывает вам все запросы, которые обрабатываются Apache, которые не кэшируются с помощью Varnish. Это поможет вам определить различные случаи:
    • Посылает ли бэк-енд заголовок, не кэшируемый Varnish;
    • Инициирует ли бэк-енд новый сеанс, который не нужен;
    • Частично неправильные ссылки на ваш сайт, например, http://thenextweb.com/apple/http://referrer.com/my/cool/article;
    • Небольшие отклонения от нормальных запросов, которые можно нормализовать в Varnish, так что вы можете обслуживать стандартные страницы, такие как http://thenextweb.com/correct/article/link?utm=campaign.
  • WP-VCL Их базовый VCL, который нормализует различные запросы к стандартным версиям.

Необходимым шагом для The Next Web была разработка способность предоставлять кэшированное содержимое зарегистрированным пользователям. Чтобы сделать это, они подтягивали все специфические для пользователя части страницы и загружает их через вызов AJAX. Это означает, что содержимое не нужно целиком загружать из WordPress. Разработчики дублировали весь необходимый код для обработки входа в систему и основные моменты профиля пользователя WordPress в свои собственный крошечный класс входа в систему. Класс занимает 1 миллисекунду для загрузки, а не 100 — 200 миллисекунд для загрузки через весь стек WordPress. Это предотвращает загрузку WordPress для решения тривиального запроса, который может ухудшить общую производительность вашего сайта и съедать циклы процессора, которые должны быть использованы для отображения не кэщированным страниц. Дополнительным преимуществом является то, что WordPress может обработать все страницы, не используя авторизованный режим .

Это используется одновременно как функция Varnish под названием ESI, которая позволяет команде кэшировать различные разделы страницы отдельно с различным временем действия. Это позволяет им показывать свежий контент в виджетах на боковой панели, даже если основное содержание имеет продолжительное время действия.

Основные плагины

Необходимые инструменты и сервисы

  • VaultPress: Hot Air для резервного копирования в режиме реального времени.
  • WordPress.com stats: Hot Air
  • Google Analytics: Hot Air
  • Chartbeat и Newsbeat: Hot Air
  • CDN: все
  • SoftLayer: Slashgear. Компания которая предоставляет выделенный хостинг, с которой Slashgear сотрудничает уже семь лет.
  • Cloudflare: Laughing Squid. Предоставляет сервисы для исполнения и масштабирования.
  • Disqus: Slashgear. Привносит инструменты социального взаимодействия и переносит загрузку комментариев на свои серверы.
  • Solr: The Next Web. Для поиска.

Сложности

Высокие уровени кэширования

Все владельцы блогов с которыми я говорил имеют высокие уровни кэширования. Digital Trends справляются с этим при помощи Akamai Destributed, Varnish и Memcached. Когда это сочетается с авторизацией и регистрацией пользователей, может быть трудно убедиться, что каждый видит то, что он должен видеть поскольку кэшируется столько элементов страницы, сколько возможно.

Мобильный

IPhonclub.nl имеет дело с относительно высоким числом мобильных посетителей. В прошлом он использовал WPtouch для iPhone посетителей (вместе с его родным приложением). Команде обслуживающей сервер пришлось выполнить значительную работу с Varnish, Nginx, и W3TC чтоб хранить кэши для настольных и мобильных посетителей отдельно друг от друга, таким образом сделав пользовательскую конфигурацию более сложной. Тем не менее, позднее в этом году iPhoneclub.nl сольется с iPadclub.nl чтобы стать iCulture.nl. В дополнение к слиянию, они переходят к адаптивному дизайну, который будет лучше соответствовать новому веб-сайту и решать вопрос обращения с мобильным посетителями.

Создан работать, а не выполнять.

Проблема поднятая The Next Web по сути заключена в архитектуре WordPress. Хоть использовать все возможности и все плагины и легко, тем не менее они построены, чтобы работать, а не выполнять. С каждым изменением кода, вы должны убедиться, что он не калечит производительность.

Безопасность

Безопасность является большой проблемой для всех пользователей WordPress, особенно для широко известных сайтов. Neatorama обращает внимаение на то, что не всегда достаточно вовремя обновлять WordPress. Вы также должны следить за постоянным обновлением вашего сервера.

Huge Servers Некоторым веб-сайтам нужны огромные сервера.(Изображение: Skimaniac)

Масштабируемость

Slashgear счел что WordPress сложно масштабировать без закидывания дополнительного оборудования для этого. Они используют систему кэширования, но WordPress создан быть динамичным, и кэширование в динамической среде не всегда работает гладко.Разработчики преодолели эту проблему заставив их плагины использовать AJAX для подтягивания данных в реальном времени на статически кэшированные страницы.

Комментарии

Такой веб-сайт как Hot Air может получать сотни или даже тысячи комментариев для одного единственного поста. Каждый день добавляются десятки постов, и сайт живет уже в течение шести лет. “При таком большом количестве комментариев”, говорит Марк, “вы действительно должны следить за оптимизацией базы данных. У нас есть несколько пользовательских плагинов, которые перехватывают запросы  связанные с комментированием и переписать их в более простой форме. И вы хотите ограничить число запросов которые вы делаете в отношении этой таблицы. Например, я уничтожил секции “Прямо сейчас” и “Последние комментарии” в панели управления “.

События

Как уже говорилось в отношении iPhoneclub.nl и SlashGear, Hot Air приходится иметь дело со их собственными значимыми событиями. Когда крупное политическое событие происходит, всего несколько минут простоя могут нанести ущерб. У Марка есть готовые системы предупреждения и автоматизированные ответные действия В случае возникновения проблемы, он может настроить систему на автоматическое исправление, если проблема повторяется или уведомить его, когда какая-то ее часть показывает что проблема производительности становится неизбежной.

Вы бы сказали WordPress прощай?

Я спросил у каждого из блогов представляли ли они когда-либо ситуацию, в которой им пришлось бы уйти от WordPress. Вот что они говорят.

Tom Уиллмот, DigitalTrends

На самом деле я не люблю все эти высказывания о том, что “WordPress медленный”. Это просто PHP плюс MySQL — как Facebook. Вполне возможно, уйти за рамки определенных вещей, которые делает WordPress (например, возможно, вы замените движок ЧПУ с чем-то более эффективным), но принципиально принятое решение, что WordPress почему-то медленный и он него следует избавиться, это, вероятно, попытка избежать конкретной трудности, в которой и кроется вся проблема. Конечно, есть аспекты WordPress, которые могут быть медленными, если вы ничего с ними не делаете, но они с лихвой компенсируется всем тем, что вы получаете.

Писатели любят бэк- енд WordPress;  WordPress.com используют некоторые из крупнейших сайтов в мире. Digital Trends обрабатывает 33 миллиона страниц в месяц как сайт, который гораздо более сложный (с технической точки), чем блог.

Жан-Поль Хорн, iPhoneclub.nl

Я не могу, хоть убей, подумать, зачем я захотел бы сделать это. Я использую WordPress; с ранней версии 2.0. Моя жена начала вести iPhoneclub.nl в декабре 2006 года на WordPress 2.0.5, и мы не оглядывались назад. У меня был кое-какой предшествующий опыт с PHP-Nuke и Joomla, но WordPress действительно стал более привлекательным для меня благодаря своей простоте и огромному сообществу разработчиков.

Для почти каждой отсутствующей части функциональности в ядре, доступен плагин или ее настолько легко пропатчить, что вы могли бы написать свою собственную функцию для конкретной темы. Я оценил и Drupal и ExpressionEngine (тогда он назывался pMachine), когда мы столкнулись с нашими проблемами производительности, но продолжил работу с WordPress из-за его расширяемости и уже открывалось взору четкое видение того, что WordPress становится все более полнофункциональной CMS.

The Next Web

Я не вижу ситуации, когда вам нужно выйти за рамки WordPress до тех пор, пока вы не попали в ловушку, думая, что вы можете все делать с помощью плагинов.

Laughing Squid

WordPress продолжает развиваться вместе с нами и по-прежнему является лучшей платформой для блогов. Есть все признаки того, что она будет оставаться таковой в будущем.

SlashGear

[Мы уйдем], когда WordPress станет слишком раздутым. Как вы можете видеть, каждый мажорная версия WordPress поставляется с большим количеством хуков (WordPress 3.0 имел немногим более 750 хуков, а 3,4 имеет более 1500 хуков). На данный момент, мы предпочитаем масштабируемость и надежность платформы над функциями, которые обычно не используются.

Марк Джекуит, Hot Air

Ни в коем случае. Комментарии самая трудная вещь для масштабирования, и для нее есть решения, например, использование внешних сервисов или даже разделение комментариев между несколькими таблицами. Я еще не сталкивался с той проблемой которая по-моему мнению не могла бы быть решена, а гибкость и расширяемость WordPress оказались бесценными.

Сказавшие прошай

Зачем кому-либо хотеть уйти от WordPress? Один из владельцев блогов с которыми я разговаривал, был в процессе делать именно это. Часть Neatorama касающиеся электронной коммерции NeatoShop, выросла, и было решено интегрировать блог и магазин на одну платформу. Это дает возможность для того, чтобы приспособить издательский процесс в соответствии с конкретными потребностями, такими как планирование и выстраивание очередности многочисленных постов, обслуживание нескольких блогов с помощью одной панели, кросс-постинг и наличие< ...

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.