Amazon Ec2 — Как найти строку кода PHP, который использует большинство процессоров

В настоящее время я использую EC2, и при тестировании (с locust.io) 100 одновременных пользователей я получаю RPS 15. Однако загрузка моего процессора составляет почти 100%.

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

2

Решение

Я бы предложил xdebug а также kcachegrind для профилирования и анализа поведения вашего кода.

Настройте xdebug следующим образом, чтобы включить профилирование:

xdebug.profiler_enable = 1
xdebug.profiler_output_name = xdebug.out.%t
xdebug.profiler_output_dir = /tmp
xdebug.profiler_enable_trigger = 1

Если вы пройдете XDEBUG_PROFILE как параметр POST или GET, xdebug выдаст данные профилирования в настроенном месте.

Откройте эти файлы с помощью kcachegrind, чтобы углубиться в него.

Остерегайтесь: выполнение во время профилирования займет время, а созданные файлы могут стать довольно большими — обратите внимание на использование диска.

2

Другие решения

Вы можете попробовать xhprof. Это может решить вашу проблему.

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

Попробуйте.

0

Существует довольно много коммерческих продуктов, предназначенных для явного решения этих проблем (часто с приличными бесплатными пробными версиями) на большинстве языков и типов приложений.

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

Это мой инструмент для диагностики проблем с производительностью в веб-приложениях на PHP или Java.

Трассировка новой реликвии

AWS только что запустил «X-Ray», который должен выполнять аналогичную работу, хотя у меня не было возможности попробовать его.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector