php / php/php-src

FPM Status: active processes greater than pm.max_children

Ouverte
#14,212 9 commentaires 1 réaction 1 personne assignée Voir sur GitHub

@bukka y travaille déjà.

Depuis le 13/5/2024.

Bug SAPI: fpm
Langage dominant
C
Étoiles
40.4k
Forks
8.2k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

Given the following FPM Pool configuration the Pool is configured using 1500 static workers and a listen.backlog of 100:

$ cat /etc/php/8.3/fpm/pool.d/backoffice.conf 
[backoffice]
listen = /run/php8.3-fpm_backoffice.sock
listen.backlog = 100

pm = static
pm.max_children = 1500
pm.status_path = /php8.3-fpm-status-backoffice.php

; The number of requests each child process should execute before respawning. This can be useful to work around memory leaks
pm.max_requests = 2000

The listen.backlog works like expected on the socket.

$ ss -lxn src ==  /run/php8.3-fpm_backoffice.sock
Netid                      State                       Recv-Q                      Send-Q                                                              Local Address:Port                                              Peer Address:Port                      Process
u_str                      LISTEN                      0                           100                                               /run/php8.3-fpm_backoffice.sock 47129                                                        * 0

Without high traffic total processes reports 1500 as expected.

$ curl -s 127.0.0.1:80/php8.3-fpm-status-backoffice.php
pool:                 backoffice
process manager:      static
start time:           13/May/2024:04:02:02 +0200
start since:          22533
accepted conn:        3057525
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       1460
active processes:     40
total processes:      1500
max active processes: 549
max children reached: 0
slow requests:        0

When generating high concurrent requests using a tool like siege or k6 I can observe the following output from the status page:

$ curl 127.0.0.1:80/php8.3-fpm-status-backoffice.php
pool:                 backoffice
process manager:      static
start time:           08/May/2024:04:02:01 +0200
start since:          19565
accepted conn:        10120636
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       1
active processes:     3347
total processes:      3348
max active processes: 3503
max children reached: 0
slow requests:        0

active processes/total processes/max active processes are way over the defined pm.max_children = 1500.

How can active processes be greater than pm.max_children?

Also max children reachedreports 0.

Relates to: https://github.com/php/php-src/issues/9943#issuecomment-1607206535

PHP Version

PHP 8.3.6

Operating System

Debian 11

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.