Статьи

Диагностика проблем производительности WordPress с новой Relic

Конечный продукт
Что вы будете создавать

Это руководство продолжается с того места, где мы остановились в разделе «Использование новой реликвии для мониторинга производительности WordPress» . Здесь я дам вам концептуальный обзор производительности WordPress и познакомлю вас с использованием New Relic для оценки производительности вашего собственного сайта.

Если вы пришли сюда из руководства по оптимизации WordPress с помощью Varnish и W3 Total Cache , у вас уже есть довольно хорошо оптимизированная основа WordPress. Если нет, вы можете вернуться и просмотреть эту статью.

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

Новые службы мониторинга производительности Relic обеспечивают отличный способ обеспечить бесперебойную и эффективную работу конфигурации WordPress.

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

Если вы хотите узнать больше о New Relic, прежде чем погрузиться в это руководство по производительности, Tuts + предлагает широкий выбор статей о своих услугах .

В 2013 году Фредерик Таунс, Фредерик Таунс, создатель бесплатного плагина W3 Total Cache для WordPress , написал блог-пост для New Relic, описывающий аспекты производительности, которые мы должны рассмотреть: Оптимизация производительности WordPress с помощью New Relic . Это отличное резюме, которое я рассмотрю.

Таунс выделяет основные области, на которых нам необходимо сосредоточиться:

1. Производительность диска. Локальный диск без общего доступа всегда обеспечивает наиболее стабильную и надежную производительность. Например, использование хоста, который предлагает SSD-диски или высокоскоростные жесткие диски, является идеальным.

2. MySQL Query Cache. Кэш запросов сохраняет результаты для общих запросов к базе данных и может немедленно возвращать результаты без необходимости их повторного выполнения. Townes рекомендует использовать MySQLTuner для оптимальной настройки конфигурации базы данных.

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

4. Размер файла ваших тем WordPress и плагинов. Уменьшение размера и количества файлов (и, следовательно, HTTP-транзакций) оказывает существенное влияние на работу пользователей с вашим сайтом. К сожалению, не все каскадные таблицы стилей (CSS) или JavaScript (JS) могут быть легко объединены и сведены к минимуму.

5. Оптимизация PHP , которая относительно медленная. Более быстрые версии PHP, такие как HHVM, могут подойти для WordPress в будущем, но я читал, что он еще не стабилен для этой задачи. Тем временем Townes предлагает список предложений: уменьшить объем памяти ваших сценариев, использовать автозагрузку, использовать запоминание, избегать циклов, сократить время выполнения, минимизировать количество открытых файлов, чтобы уменьшить количество обращений к диску и использованию памяти, и использовать include и require а не include_once и require_once .

6. Использование Opcode Caching, такого как APC, фреймворк с открытым исходным кодом для PHP-кода. Таунс говорит: «APC хранит интерпретированную (исполняемую) версию вашего кода в памяти, поэтому запросы на него не нужно повторно интерпретировать».

В кеше объектов WordPress происходит много магии. Существуют различные группы объектов, которые генерируются WordPress при обработке запросов страниц. Эти группы служат различным целям, и в зависимости от того, как вы используете WordPress, очень значительное повышение производительности реализуется путем постоянного хранения объектов с использованием, например, memcached или APC-хранилищ «.

W3 Total Cache от Townes реализует это на уровне кэширования страниц, позволяя создавать сценарии, в которых части данной страницы все еще могут быть сгенерированы PHP, тогда как большие части неизменной страницы кэшируются и не восстанавливаются.

«W3TC позволит вам выбрать хранилище данных, отличное от MySQL, например memcached, которое предназначено для высокоскоростного доступа с нескольких серверов приложений. Таким образом, вместо каждого запроса страницы, который уже должен извлечь соответствующую информацию о посетителе или других динамических элементах, MySQL теперь может фокусировать (и настраивать) только динамические части ваших шаблонов ».

Таунс говорит: «Кэширование фрагментов сократит ваше время выполнения на порядки».

7. Использование кэширования страниц. Самым выгодным способом масштабирования типичного веб-сайта является кэширование страниц. Вместо того, чтобы разбивать весь ваш стек при каждом запросе страницы — WordPress, Theme, Plugins, HTML и MySQL — мы просто извлекаем статический HTML из веб-кэша, часто из памяти. Масштабирование трафика на некэшированном сайте WordPress может снизить скорость за считанные секунды, в то время как масштабирование трафика для предварительно записанных файлов HTML из кэша в памяти является масштабируемым.

Таунс говорит: «Обратные прокси-серверы часто обеспечивают кэширование между веб-приложением и общедоступным Интернетом. Его цель — снизить нагрузку на веб-серверы за ними. Обратные прокси-серверы оптимизированы для возврата содержимого, сгенерированного базовым приложением. Varnish, Nginx или даже Apache может быть настроен на предоставление функции обратного прокси «.

Я чаще всего использую Varnish с Apache и W3 Total Cache в сочетании для масштабирования WordPress. Если вас интересуют эти конфигурации, ознакомьтесь: Оптимизация WordPress с помощью Varnish и W3 Total Cache (Tuts +) .

8. Сети доставки контента (CDN) — это облачные службы кэширования для часто используемых файлов и носителей. Таунс говорит: «С CDN не имеет значения, где размещен ваш сайт. Если у вас есть посетители в других частях света, CDN кэширует этот контент рядом с ними и сокращает секунды в совокупности от общего времени загрузки страницы. для вашего сайта. «

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

New Relic — это сервис мониторинга производительности, который работает с различными серверными и языковыми технологиями, включая PHP, что делает его идеальным для оптимизации WordPress.

Новая Relic обеспечивает мониторинг производительности всего стека, что и для конечных пользователей, а также обеспечивает подробный мониторинг серверов. Таунс говорит: «Новая реликвия упрощает распространение событий в вашей среде».

Когда вы запускаете New Relic на своем сервере, вы можете получить подробные графики мониторинга производительности и статистику о вашем сервере и PHP, включая: время отклика, оценку Apdex ( отношение удовлетворительного времени отклика к неудовлетворительному времени отклика ), пропускную способность (количество запросов в минуту) веб-транзакции, например сторонние запросы API, частота ошибок, последние события и информация о сервере.

Новый Relic Browser

Более того, New Relic Browser отслеживает полностраничные данные жизненного цикла — намного выше начальной загрузки страницы. Для каждой загрузки страницы конечного пользователя New Relic Browser записывает:

  • время, проведенное в интерфейсе (браузер)
  • код и события, выполняемые в браузере (JavaScript, Ajax и взаимодействия с конечным пользователем)
  • время, затраченное на сервер (сеть и веб-приложение)
  • географическое происхождение
  • тип и версия браузера, а также операционная система

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

Я рассмотрел New Relic Browser более полно в Front End Monitoring с помощью New Relic Browser (Tuts +) .

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

Зарегистрируйтесь в New Relic

Я объяснил процесс регистрации и установки для интеграции сервиса W3 Total Cache New Relic в этом учебном пособии: Использование New Relic для мониторинга производительности WordPress (Tuts +) .

В консоли администрирования WordPress выберите « Производительность»> «Мониторинг» . Нажмите, чтобы подписаться на бесплатный аккаунт. Скопируйте данные для своего API и лицензионного ключа в панель настроек W3 Total Cache ниже:

Введите свой новый Relic API и лицензионный ключ в настройках W3TC

Включение New Relic на вашем сервере обеспечивает мониторинг с панели мониторинга W3TC, как показано ниже:

Панель инструментов W3 Total Cache для New Relic

Для получения более подробной информации вы можете посетить веб-сайт New Relic и войти в свою учетную запись.

На высоком уровне мониторинг New Relic Server дает вам обзор использования ЦП, использования памяти, дискового и сетевого ввода-вывода, а также информацию о вашем оборудовании и наиболее активных процессах. Это может дать вам представление о том, что происходит с вашей конфигурацией, и предупредить вас о любых существенных проблемах:

Новая панель серверов Relic

На вкладке «Процесс» отображается использование памяти и ЦП каждого процесса:

Новые реликтовые процессы

Вы также можете просмотреть историю предупреждений, указывающих красные флаги с эффективностью вашего сайта:

Новая история оповещений сервера Relic

Новая Relic полезна для оценки производительности WordPress тремя ключевыми способами:

1. Apdex. Новая Relic использует оценку Apdex, чтобы помочь вам оценить, насколько хорошо ваше приложение WordPress работает для ваших конечных пользователей, в соответствии с отраслевым стандартом измерения. Это поможет вам предоставить более точные данные для устранения неполадок и получить более четкое представление о том, какой процент ваших пользователей разочарован или удовлетворен. Оценка Apdex также предоставляет более конкретный контекст, чем общая жалоба «сайт работает медленно», которая может даже не прийти к вам в течение нескольких часов после инцидента. Apdex также дает вам более объективный способ оценить, насколько ваши реальные пользователи чувствуют улучшения производительности.

2. Производительность MySQL. Плагины и темы WordPress могут злоупотреблять вашей базой данных MySQL. Вы можете определить, какие из них вызывают проблемы, посмотрев на медленный SQL в New Relic. Например, вы можете видеть, что выборки для wp_terms, которые используются для категорий и тегов, могут потреблять 20% вашего общего времени базы данных. Или вы можете заметить медленные операторы INSERT, которые могут быть улучшены с помощью правильно размещенного индекса или уточненного запроса.

3. Мониторинг производительности сторонних плагинов и API. Использование плагинов для социальных сетей, плагинов для мониторинга и других интересных виджетов очень просто в WordPress, но может быть не сразу очевидно, как эти сторонние зависимости влияют на ваш блог или маркетинговый сайт. Новая Relic позволяет вам видеть вызовы внешних служб, «свернутые» для более целостного представления, и вы также можете отслеживать время ответа от этих третьих сторон в каждой из веб-транзакций, которые захватывает новая Relic.

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

Панель инструментов дает вам обзор времени загрузки страницы с разбивкой по Apdex и пропускной способности:

Обзор нового Relic Browser

Вот увеличенное изображение моей оценки Apdex за последние 24 часа:

Новая оценка Relic Apdex за 24 часа

Вы также можете просмотреть производительность по просмотру страницы:

Сегментация просмотра новой страницы реликвии

Когда вы детализируете, вы можете увидеть производительность отдельных файлов, загружаемых вашим сайтом. Вы можете искать любые файлы тем или плагинов, которые занимают подозрительное количество времени:

Новый скрипт скриптового анализа
Новое представление Relic Page

Новый мониторинг сервера Relic также может отслеживать производительность ваших запросов MySQL :

Новая база данных Relic APM MySQL Query Tracking

Вы можете углубиться для получения дополнительной информации:

Новый подробный обзор базы данных Relic APM MySQL Query Tracking

И диагностируйте самые медленные запросы:

Новая база данных Relic APM MySQL, отслеживающая медленные запросы

Это может быть особенно полезно для выявления медленных запросов, созданных плохим кодом плагина.

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

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

Следы новой реликвии

Вот подробное описание ваших сессий. Это может помочь в оценке производительности кода в темах, а также в плагинах:

Новые Реликтовые Сессии

Следы сеанса помогут вам понять:

  • как пользователи воспринимают вашу страницу, включая время до загрузки DOM, время ожидания выполнения запросов Ajax и взаимодействия пользователя со страницей
  • последовательность событий JavaScript и браузера, которая занимает больше времени, чем другие, и когда происходит каждое событие
  • где возникают узкие места и что может их вызывать
  • почему загрузка одной страницы может быть медленнее, чем другие, предоставляя контекст для отдельных событий во время сеанса

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

Страница Ajax позволяет вам видеть, что происходит с любыми интерактивными вызовами, которые у вас есть на этой странице, помогая выявлять проблемы, возникающие у пользователей при длительных или неудачных вызовах:

Новый анализ Relic AJAX

Обратите внимание, что New Relic Browser не записывает автоматически данные Ajax. Вы должны включить его для каждого приложения в области настроек New Relic. Узнайте больше о приборной панели Ajax .

Панель обозревателя ошибок JavaScript позволяет быстро увидеть, какие ошибки происходят в вашем реальном производственном JavaScript с течением времени и в каких браузерах. Вы можете исследовать ошибки, основываясь на том, сколько раз каждый из них происходил, и на количестве уникальных загрузок страниц, которые столкнулись с этой ошибкой.

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

Новый анализ Relic Javascript

Самостоятельный хостинг WordPress требует высокого уровня технических навыков. Если вы не готовы, управляемые хосты — лучшая альтернатива. Многие из них используют New Relic для оптимизации своих сайтов, например, Page.ly.

Более глубокое погружение в New Relic требует затрат времени, но результаты того стоят. С помощью этого инструмента вы можете видеть внутри своего стека WordPress, чтобы быстро выбрать проблемные области, которые необходимо решить.

Если вы выполняете самостоятельное размещение, службы New Relic могут быть невероятно мощными способами увидеть вашу собственную среду хостинга и ваш стек WordPress, темы и плагины — и приручить зверя производительности.

В процессе развертывания (и в процессе разработки, если вы создаете свои собственные темы и плагины), вы определенно захотите углубиться в свой сайт с помощью New Relic.

Несмотря на то, что вы можете использовать New Relic Lite навсегда, по истечении двухнедельного пробного периода вы, вероятно, захотите перейти на план Pro ($ 149 в месяц), чтобы сохранить прежний уровень обслуживания. Новые браузеры Relic, Synthetics и Insight имеют свои собственные структуры ценообразования — узнайте больше на сайте New Relic .

Если у вас есть какие-либо вопросы или исправления, пожалуйста, оставьте их в комментариях. Если вы хотите следить за моими будущими уроками Tuts + и другими сериями, пожалуйста, посетите мою страницу инструктора или следуйте @reifman .