На установке с использованием nginx
с участием PHP-FPM v5.3.3
, Я заметил, что в журнале ошибок nginx часто возникают следующие ошибки:
Feb 16 15:00:22 mymachine www.example.com 2015/02/16 15:00:20 [error] 20254#0:
*1448249 readv() failed (104: Connection reset by peer) while reading upstream
[...]
Глядя на php-fpm.log
файла я заметил следующее:
[16-Feb-2015 15:00:20] NOTICE: [pool www] child 22279 exited with code 0 after
47983.681002 seconds from start
[16-Feb-2015 15:00:20] NOTICE: [pool www] child 10625 started
Это переработка рабочих как pm.max_requests
наборы директив конфигурации.
Я (разумно) предположил, что PHP-FPM будет корректно обрабатывать любое принятое соединение / запрос перед повторным использованием рабочего, поскольку эта задача не подразумевает каких-либо чрезвычайных ситуаций.
pm.max_requests
набор - обычная практика.Может быть вам просто нужно несколько рабочих бегать. Вам действительно следует исследовать количество занятых и работающих воркеров, php-fpm имеет для этого внутренний ресурс, pm.status_path
- вы можете увидеть, что в нем, с помощью wget или любого другого http-клиента:
[root@sol etc]# wget -O - -q http://localhost/status
pool: www
process manager: dynamic
start time: 29/Jan/2015:11:36:20 +0300
start since: 1633615
accepted conn: 996160
listen queue: 0
max listen queue: 0
listen queue len: 0
idle processes: 34
active processes: 1
total processes: 35
max active processes: 18
max children reached: 0
slow requests: 0
Он говорит, что у меня один активный процесс и один неактивный - значит, я в порядке. Максимальное количество занятых процессов было 18, поэтому с самого начала у меня все было в порядке.