Назад | Перейти на главную страницу

Как диагностировать время выполнения PHP-сервера, чтобы уменьшить его?

Я использую сервер API на Amazon EC2, работающий на PHP, и пытаюсь настроить его производительность с целью сокращения времени отклика. В настоящее время я тестирую производительность PHP-кода изнутри, получая время в миллисекундах в начале запроса, а затем получаю миллисекунды в конце запроса непосредственно перед завершением скрипта. После реализации memcache и нескольких других приемов я получил большинство запросов, сообщающих о времени выполнения в пределах 10-20 мс в моем PHP-коде. Однако, когда я смотрю на сетевые запросы в инструментах разработчика Chrome, я все еще вижу, что запросы, которые попадают в мои сценарии PHP, отображаются как:

Sending 0ms
Waiting 145ms
Receiving 1ms

Это сравнивается с запросами на статические файлы, которые обычно больше похожи на:

Sending 0ms
Waiting 15ms
Receiving 1ms

Итак, все, что я знаю, это то, что когда я запускаю свой PHP-скрипт и проверяю время выполнения внутри скрипта, для выполнения моего скрипта требуется всего 10-20 мс. На данный момент я позаботился о том, чтобы мой PHP-код работал очень быстро, но я пытаюсь понять, как сделать остальную часть потока вне выполнения моего скрипта быстрее.

Итак, у меня вопрос: как определить, откуда берутся дополнительные 120 мс, если они находятся вне потока моего собственного кода? Это время, потраченное Apache на настройку процесса PHP? Это время, потраченное интерпретатором PHP на синтаксический анализ файлов PHP? Время, затраченное процессом PHP на доставку ответа от моего скрипта обратно в Apache? Как мне выяснить, как распределяются эти 120 мс дополнительного времени с целью его сокращения?

Что ж, у вас есть трудный, не такой сложный и легкий способ сделать это.

Трудный путь

Используйте microtime (), чтобы вручную профилировать свой код, чтобы увидеть, что отнимает больше всего времени. Легко реализовать для небольшого проекта, но становится действительно громоздким.

Не такой уж и сложный путь

Настройте отладчик PHP, чтобы сделать это за вас. Xdebug вероятно, лучший, но есть много вариантов.

Он настроен как расширение PHP, поэтому он автоматически профилирует ваш код и сообщает вам, что отнимает много времени.

Скорее всего, это займет у вас приличное количество времени, чтобы настроить, и это совсем не просто.

Легкий путь

Проверять, выписываться Новая реликвия. Вы устанавливаете расширение PHP и настраиваете учетную запись на их сервере, и он автоматически профилирует ваш код для вас.

Их профессиональная версия, которая довольно дорога, дает вам массу данных, чтобы выяснить, что отнимает время на PHP-скрипте. Бесплатная версия дает вам общее представление о том, что происходит.

Сначала я был настроен скептически, но я действительно доволен уровнем данных, которые они предоставляют.

Кроме того, у них есть 15-дневная бесплатная пробная версия Pro.

* Я не связан с New Relic.