viktorsvg

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

Проблема решена. Загвоздка была в подключенном расширении XDrbug.
После его отключения все встало на свои места и начало работать как надо.
viktorsvg #:
По ходу появилась мысль, завтра поверю, сейчас уже поздно.
Проблема в настройке пользователя php-fpm.

Т.к. у меня, на моей машине php-fpm и php-cli работают из под одного пользователя - то fpm  видит запущенные процессы и пытается им скормит строку запроса.
а процессы запущены как cli и это вызывает зависание fpm.

Если сработает отпишусь.
Предположение не верное.
Перевел nginx и php-fpm на одну группу/пользователя -> _nginx, настроил права и запустил.
Все работает, но проблема сохранилась.
если более 2-х одновременно запущенных процессов cli , то fpm не отвечает
По ходу появилась мысль, завтра поверю, сейчас уже поздно.
Проблема в настройке пользователя php-fpm.

Т.к. у меня, на моей машине php-fpm и php-cli работают из под одного пользователя - то fpm  видит запущенные процессы и пытается им скормит строку запроса.
а процессы запущены как cli и это вызывает зависание fpm.

Если сработает отпишусь.

1. При запущенных cli просмотри через top htop что по памяти и cpu
процессы спят - S , по памяти потребление около 100-200 Мб, по процессору загрузка 0,1-0,4% ядра/потока

2. посмотри не блокируется ли бд 
Нет бд не блокируется, там в настройках выставил 
max_connections = 68, с запасом (это для разработки на моей машине), и если упираешься в лимит подключений у БД - то в логах соответственно есть ошибка

SQLSTATE[08006]

и ли подобное

3. посмотри при запущенных cli скриптах доходит ли запрос до самого php (сделай простой файл который просто отдает строку.
проверил, не доходит, т.е. скрипт index.php  даже не запускается, иначе отписывался бы лог, специально до запуска лары и инициализации соединения с БД строку вставил.

Если не доходит перенастраивай fpm - вот и хочу понять как, и какая связь между fpm и cli.

Совет не делай while(true) - думал по этому поводу, но тут еще время запуска скрипта добавляется.
Да и скрипты нужно на дежурстве держать постоянно.  т.е. проверка идет еже секундно.

isy.m #:

Может, проблема в лимитах одновременных подключений или памяти? Попробуй проверить настройки max_children для php-fpm и лимиты в системе. А еще можно попробовать запускать тяжелые скрипты через очереди вроде Redis или RabbitMQ, чтобы не блокировать фнд.

Настройки php-fpm основное:
pm = dynamic
pm.max_children = 64
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_timeout = 10s;
pm.max_requests = 500
По железу, то же вроде все в норме:
8 ядер / 16 потоков
32 Гб озу
------------------------------------
Redis или RabbitMQ не очень подходят, если опираться на готовые решения, а если городить свой велосипед, то лучше без доп. технологий.
Суть в том, что есть задачи в фоне и некоторые задачи еще могут распараллеливаться на потоки в определенные моменты.
то какая задача и на сколько потоков может распараллелиться определяется конфигом.
Ну и еще пока задача выполняется и не завершилась ее может отменить пользователь.
По этому Redis или RabbitMQ пока не рассматриваю.