-
Собрать образы nginx и php-fpm:
docker build -t nginx:local . docker build -t php-fpm:local .
-
Запустить docker-compose.yml:
docker-compose up -d
-
Проверить, что сайт открывается:
curl localhost:8181
Для отладки скрипта использовал strace с параметром -с:
strace -c php index.php
Вывод показывает следующую статистику по вызовам при выполнении данного скрипта:
Для сравнения я выполнил дебаг скрипт example.php, который выводит "Hello World":
Тут видно, что в сравнении с index.php, кол-во read вызовов значительно меньше.
Предполагаю, что зависание сайта происходит из-за большого количества вызовов read.
В скрине выше по скрипту index.php в выводе есть ошибка в вызове read, решил ее продебажить при помощи команды strace -f -e read php index.php:
Далее, чтобы получить более подробную картину , командой strace -yy php index.php получил следующий вывод:
Вывод: в контексте poll выше на картинке revents=POLLOUT означает, что сокет готов к записи, но не готов к чтению, возможно код не проверяет данный флаг, но все равно пытается считать. Возможно это так же влияет на время работы скрипта.



