My team is using PHP-FPM, configured statically with a max of 32 processes, in a Kubernetes cluster. We're autoscaling based on PHP-FPM metrics, and there are many replicas. I'm frequently (i.e. on all replicas) seeing the PHP-FPM status show queued connections, even though the max active processes is below total processes. For example:
pool: www
process manager: static
start time: 06/Feb/2025:17:37:07 +0000
start since: 80556
accepted conn: 265772
listen queue: 0
max listen queue: 2
listen queue len: 511
idle processes: 27
active processes: 5
total processes: 32
max active processes: 21
max children reached: 0
slow requests: 0
Note that the max active processes is 21 of the 32 available, but that the listen queue has reached 2. Why are connections being queued when there are idle processes?