У меня возникла проблема с использованием ЦП на моем веб-сайте, и я ищу способ обнаружить (и исправить), что ее вызывает. Тема, не затронутая в этом вопросе.
Следуя ответу Хакре здесь, теперь я понимаю, что мне нужно профилировать мой PHP-вызов.
Разумно ли размещать веб-сайт на своем собственном компьютере, запускать профилировщик и использовать эту информацию для улучшения моего веб-сайта?
Любые другие предложения о том, как сделать это наилучшим образом?
Профилирование с помощью Profiler-плагинов
Не уверен, что именно вам нужно сделать с вашим профилированием, но WP Tuner (плагин WordPress) имеет большое значение для определения того, что замедляет вашу установку WP.
Он смотрит на каждый плагин и дает вам память, процессорное время и SQL-запросы.
SQL Monitor ( плагин WordPress) анализирует производительность SQL.
Объедините его с W3 Total Cache (плагин WordPress), и вы получите лучшую производительность на любой платформе.
Кроме того, рассмотрите возможность использования временного API для хранения фрагментов, которые вам не нужно генерировать каждый раз. Это действительно может помочь на медленной БД.
Хм, использование какой-либо другой операционной системы, отличной от той, на которой работает сайт (скорее всего, Unix или Linux), как-то бесполезно для профилирования. Профилирование должно выполняться в среде, которая максимально соответствует целевой среде.
код есть код, если в определенном плагине есть реальное узкое место (именно это и есть OP), профилирование обнаружит это независимо от того, на какой ОС он работает. Кроме того, он не уточнил, на какой ОС работает его веб-хост. Извините, я не знаком с другими ОС, я дал ссылку на установщик Windows в основном для ознакомления.
Марек — спасибо за ссылку и ответ. Хакре, я понимаю вашу точку зрения, хотя я подозреваю, что для профилирования плагинов это было бы довольно похоже на обеих ОС, не так ли?
Зависит от плагина. Я бы просто не рискнул проводить измерения под другим типом системы, чтобы система жизни приблизилась к ней. Может только создавать головную боль, и вы смотрите не в те места и т. Д. — рядом с этим вы можете лучше профилировать под Linux, чем под Windows. см.: hakre.wordpress.com/2010/09/09/…
Мы создали профилировщик PHP поверх XHProf, который также использует формат вывода callgrind. Основное преимущество по сравнению с XDebug заключается в значительно меньших накладных расходах и улучшенной обработке рекурсивных функций, а также в профилировании начальных и конечных функций в стиле XHProf, позволяющем выполнять автоматизированное модульное тестирование.
Вы можете увидеть его по адресу http://www.exteon.ro/en/products/php-tools/web3tracer.
Вам нужно будет скомпилировать и использовать его на своем тестовом устройстве или попросить своего хостинг-провайдера установить его, но они вряд ли это сделают.
Профилирование с помощью Xdebug
Я искал некоторые ссылки, чтобы было легче читать тему. Я искал профилирование PHP с помощью XDebug, что я бы предложил сделать:
Для отображения результатов профилирования на удаленном сайте может пригодиться webgrind. Это PHP-приложение, которое обобщает выходные данные профилировщика.
Я не уверен, возможно ли предоставить все это в виде плагина для wordpress (по крайней мере, мне неизвестно, о чем я знаю, и я не думаю, что есть что-то доступное прямо сейчас), поэтому вам может понадобиться выполнить некоторые настройки/конфигурацию/профилирование самостоятельно.
Да, вполне разумно настроить сайт в новой среде, где вы могли бы запустить профилировщик производительности и другие инструменты.
Как упоминалось в комментариях здесь, да, для достижения наилучших результатов вам понадобится среда, очень похожая на то, что работает в производственной среде. И чтобы получить еще лучшие результаты, вам нужно будет имитировать текущий трафик, загрузку ЦП/диска/сети, которые происходят на рабочем сервере, во время профилирования.
Теоретически это можно сделать, но по моему опыту никто никогда так не делает по двум причинам:
Я занимаюсь профилированием приложений WordPress уже около десяти лет, и вот что вам нужно знать: 99% проблем с производительностью кроются в коде приложения. Не в конфигурации сервера, не в дисковом ио или объеме оперативной памяти, не в перенасыщенной сети. Но в коде приложения.
Независимо от среды, если приложение выполняет:
И если этому стороннему сервису требуется 1 секунда для ответа, то каждая загрузка страницы на вашем сайте WordPress будет платить штраф в 1 секунду. Каждый. Одинокий. Время. В Windows, в Linux, в MacOS. С 1G RAM или 32G RAM. С SSD-диском или старым вращающимся магнитным диском.
Могли ли вы обнаружить проблему с запуском профилировщика на локальном компьютере? Конечно, вы могли бы:
Yes, naive code such as this can easily be spotted with PHP-level tools, like Query Monitor and the Debug Bar family, right there in production, even on a shared host. But if they don’t reveal the problem, then it’s perfectly fine to get a full copy of your production site, run it locally or some cheap VPS, in an environment where real profiling tools are available.
Да, вполне разумно профилировать веб-сайт на своем компьютере. Вам нужно будет установить среду, включая веб-сервер, и профилировать сайт с помощью выбранного профилировщика.
В Windows локальная установка WordPress чрезвычайно проста благодаря установщику веб-платформы. Установите WordPress одним щелчком мыши, включая все предварительные условия отсюда.
Я наткнулся на эту замечательную статью в блоге Delicious Brains. Там упоминаются Query Monitor и Blackfire.