Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

php-fpm лимит по IP

У меня сервер 10x3ghz рам 8гб Centos 6.5, nginx, php-fpm, mysql
есть некий скрипт который долго выполняется, примерно 1 минут. и когда я запускаю его, я не могу зайти на другие страницы сайта пока этот скрипт не выполнится. Я думал это nginx блокирует чтобы второго запроса не было пока первый не завершится. Но видел что страницы статические без проблем открываются. Наверное это лимит php-fpm. Но не могу как исправить. Я хочу чтобы разрешал 2 одновременных соединений
Скрипт запускаю через URL. Если в этот момент зайди на сайт с другого İP то все работает. В смысле ограничивается доступ только к ip который запускал скрипт.
[root@localhost ~]# grep ^pm.max_children /etc/php-fpm.d/www.conf pm.max_children = 500 [root@localhost ~]# ps axu | grep -c fpm 132


Ответ

Нашел в чем проблема. Это файл сессии блокируется.
Сессии, использующие файлы (по умолчанию в PHP), блокируют файл сессии сразу при открытии сессии функцией session_start() или косвенно при указании session.auto_start. После блокировки, ни один другой скрипт не может получить доступ к этому же файлу сессии, пока он не будет закрыт или при завершении скрипта или при вызове функции session_write_close(). Скорее всего это станет проблемой для сайтов, которые активно используют AJAX и делают несколько одновременных запросов. Простейшим путем решить эту проблему будет вызов функции session_write_close() сразу же как только все требуемые изменения в сессии будут сделаны, предпочтительно ближе к началу работы скрипта. Также можно использовать другой механизм сессии, который поддерживает конкурентный доступ.

Комментариев нет:

Отправить комментарий