php pcre / perf - Причины торможения PHP в Bitrix (но не только)

someone

сисадмин сервера 0ed
Команда форума
Администратор
Регистрация
3 Апр 2006
Сообщения
554
Реакции
896
  • Автор темы
  • Модер.
  • #1

Причина торможения PHP в Битриксе​



Вчера посмотрел это короткое видео на тему тормозов php сайта. В данном примере это был Битрикс, но проблема была не в нём, а в настройках веб сервера. Мне понравился способ решения проблемы с помощью perf, поэтому решил его отдельно разобрать текстом:

В видео описана проблема, когда один и тот же сайт на одном сервере тормозит, а на другом работает нормально. Причём разница в производительности конкретного тормозного скрипта отличается во много раз. На первый взгляд не понятно, в чём проблема.

Автор взял инструмент для профилирования нагрузки perf:
Код:
# apt install linux-perf
# yum install perf

И просто запустил его встроенный топ:
Код:
# perf top

8ff63907bbc1f2a01d565[1].png

Там увидел профиль библиотеки libphp7.so, которая отвечает за исполнение php кода. Зашёл в её подробности и там увидел, что существенную нагрузку даёт исполнение функции php_pcre_exec. Я пишу подробно, потому что повторил всё то же самое на одном из своих нагруженных сайтов на Битриксе.

Исходя из этой информации автор предположил, что причина катастрофического падения производительности как-то связана с модулем php pcre. На деле так и вышло. Этот модуль был по какой-то причине отключен (хотя по умолчанию он должен быть включен, кто-то побаловался с настройками), что и приводило к жутким тормозам. Когда его включили, сайт заработал нормально.

Я обратил внимание на это видео, потому что понравилось простое и быстрое решение. Не думал, что perf может так быстро помочь. Обычно с его помощью снимают полные стек-трейсы, в которых смогут разобраться не только лишь все. Нужны глубокие знания в системных вызовах Linux, функциях ядра, аппаратных счётчиках и т.д. Я, к примеру, особо в этом не разбираюсь, поэтому и не смотрю. Но в данном примере perf довольно быстро и легко помог решить проблему. Берите на вооружение.

Взято из Для просмотра ссылки Войди или Зарегистрируйся
 
  • Автор темы
  • Модер.
  • #2
PS: это конечно не единственная причина торможение битрикс сайтов. Там их хватает. Чего стоит только множественных открытия и закрытия соединений с базой (я не про SQL запросы, а именно про подключения к базе) при отображение страницы юзеру...

Но тут интересен сам подход с использованием perf top - старая, но по прежнему мало используемая вещь
 
Назад
Сверху