Как узнать какая часть PHP кода нагружает CPU на сервере?

Имеется VDS с centos 7
хочу оптимизировать php скрипт, при большом числе обращений он сильно нагружает CPU
каким образом я могу найти те строки кода которые влияют на это?
  • Вопрос задан
  • 1103 просмотра
Пригласить эксперта
Ответы на вопрос 5
@Yan-s
Гуглите "PHP профилирование"
XDebug, XHprof, Blackfire ...

А так же "нагрузочное тестирование"
jmeter ...

Для быстрой проверки коротких сценариев: делаем замеры, вырезаем кусок, повторяем замеры.
Ответ написан
@Codebaker
Всё умею, всё могу!
Типичные места с проблемами:
- сессии, основанные доступе к файловой системе (по умолчанию);
- неоптимальные обращения к БД;
- длинные циклы (зачастую с обращениями к БД).

Поищите такие места в вашем скрипте, и далее как советовал Yan-s : делаем замеры, вырезаем кусок, повторяем замеры.
Ответ написан
@oxemelot
1) Установите php extension xdebug
Включите этот extension, а также профилирование в настройках xdebug
xdebug.profiler_enable = 1
Обратите внимание на эти 2 опции (куда складывать профайл файлы):
xdebug.profiler_output_dir
xdebug.profiler_output_name
2) Выкачиваете файлики профилирования себе на девелоперскую машину, далее скармливаете такой утилите как QCacheGrind. Она довольно быстро проанализирует их и выдаст вам какие методы, сколько раз вызывались, и сколько процессорного времени ушло на обработку. Результаты можно сортировать.
3) На продакшене xdebug лучше отключить.
Ответ написан
aliencash
@aliencash
Партизан
предлагаю суперэлементарный вариант.
в начале скрипта разместите $start = microtime(true);
а по коду раскидайте printf(microtime(true) - $start);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы