Spec-Zone.ru › Phalcon 3

Увеличение производительности: что дальше?

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

Профилирование на сервере

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

Профилирование с помощью XDebug

Xdebug предоставляет более простой способ профилирования приложений PHP, просто установите расширение и включите профилирование в php.ini:

xdebug.profiler_enable = On

Используя инструмент, такой как Webgrind, вы можете увидеть, какие функции/методы работают медленнее других:

../_images/webgrind.jpg

Профилирование с помощью Xhprof

Xhprof — еще одно интересное расширение для профилирования приложений PHP. Добавьте следующую строку в начало файла загрузки:

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

Затем в конце файла сохраните данные профилирования:

$xhprof_data = xhprof_disable('/tmp');

$XHPROF_ROOT = "/var/www/xhprof/";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";

$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing");

echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";

Xhprof предоставляет встроенный HTML-просмотрщик для анализа данных профилирования:

../_images/xhprof-2.jpg
../_images/xhprof-1.jpg

Профилирование SQL-запросов

Большинство систем баз данных предоставляют инструменты для выявления медленных SQL-запросов. Выявление и исправление медленных запросов очень важно для повышения производительности на стороне сервера. В случае MySQL вы можете использовать журнал медленных запросов, чтобы узнать, какие SQL-запросы занимают больше времени, чем ожидалось:

log-slow-queries = /var/log/slow-queries.log
long_query_time = 1.5

Профилирование на клиенте

Иногда нам может потребоваться улучшить загрузку статических элементов, таких как изображения, JavaScript и CSS, для повышения производительности. Следующие инструменты полезны для выявления общих узких мест на стороне клиента:

Профилирование с помощью Chrome/Firefox

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

../_images/chrome-1.jpg

Firebug предоставляет аналогичную функциональность:

../_images/firefox-1.jpg

Yahoo! YSlow

YSlow анализирует веб-страницы и предлагает способы улучшения их производительности на основе набора правил для высокопроизводительных веб-страниц

../_images/yslow-1.jpg

Профилирование с помощью Speed Tracer

Speed Tracer — инструмент, который поможет вам определить и исправить проблемы производительности в ваших веб-приложениях. Он визуализирует метрики, которые собираются из точек низкоуровневой инструментации внутри браузера, и анализирует их по мере выполнения вашего приложения. Speed Tracer доступен как расширение для Chrome и работает на всех платформах, где в настоящее время поддерживаются расширения (Windows и Linux).

../_images/speed-tracer.jpg

Этот инструмент очень полезен, потому что он помогает получить реальное время, затраченное на отрисовку всей страницы, включая разбор HTML, оценку JavaScript и стили CSS.

Использование последней версии PHP

PHP с каждым днем становится быстрее, использование последней версии повышает производительность ваших приложений, а также Phalcon.

Использование кэша байткода PHP

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

apc.enabled = On

PHP 5.5 включает встроенный кэш байткода под названием ZendOptimizer+, это расширение также доступно для 5.3 и 5.4.

Выполнение блокирующих задач в фоновом режиме

Обработка видео, отправка писем, сжатие файла или изображения и т. д. — это медленные задачи, которые необходимо обрабатывать в фоновых задачах. Существует множество инструментов, которые предоставляют системы очередей или обмена сообщениями, которые хорошо работают с PHP:

  • Beanstalkd
  • Redis
  • RabbitMQ
  • Resque
  • Gearman
  • ZeroMQ

Google Page Speed

mod_pagespeed ускоряет ваш сайт и уменьшает время загрузки страницы. Этот модуль для Apache HTTP-сервера с открытым исходным кодом (также доступен для nginx как ngx_pagespeed) автоматически применяет лучшие методы повышения производительности веб-страниц к страницам и связанным ресурсам (CSS, JavaScript, изображения), не требуя изменений в существующем содержимом или рабочем процессе.

© 2011–2017 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/latest/reference/whats-next.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API