Spec-Zone.ru › Phalcon 2

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

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

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

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

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

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

zend_extension=xdebug.so
xdebug.profiler_enable=On
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name=cache.%p.json

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

../_images/webgrind.jpg

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

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

<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

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

<?php
xhprof_disable();
$xhprof_data = xhprof_get_array();

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

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

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

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

 -- enable slow query log
show variables like 'slow_query_log';
-- enable slow query log if it's off
set global slow_query_log = 'ON';
-- set the time threshold for slow query log
set global long_query_time = 2;

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

Иногда нам может потребоваться улучшить загрузку статических элементов, таких как изображения, 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=1
apc.shm_segments=1
apc.shm_size=20M

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, изображения) без необходимости изменения вашего существующего контента или рабочего процесса.

Spec-Zone.ru

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