PHP-FPM Process Count Inconsistencies
@bukka y travaille déjà.
Depuis le 1/7/2025.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.2k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
Summary
PHP-FPM continues to report inaccurate process counts in 2025, with active processes showing as extremely low even under high load. This appears to be a continuation or regression of bug #76003, which was supposedly fixed in April 2022.
Description
The PHP-FPM status endpoint reports inconsistent and incorrect process counts, specifically:
- "active processes" showing as very low (often 1-3) during periods of high traffic
- Manual process state counting reveals many processes in "Running" and other active states
- Discrepancy between calculated active processes and FPM's reported active count
Steps to Reproduce
- Set up PHP-FPM with moderate traffic (50+ concurrent requests)
- Query FPM status endpoint:
http://localhost/fmp-status?json&full - Compare
active processesfield with manual state counting - Observe discrepancy between reported and actual active processes
Expected Result
active processesshould equal the sum of all non-idle process states- Count should reflect actual load and match manual calculations
Actual Result
active processesshows artificially low numbers (1-5) during high load- Manual state counting shows 20-40+ processes in active states
- Creates monitoring confusion and incorrect capacity planning
Debug session
Video which displays the counts from process list and from the php-fpm summaries.
FPM reported is the raw active processes, idle processes and total processes
The other values are calculated based in the proccess list states.
https://vimeo.com/1096855168?share=copy
Simple Test Script
<?php
// Enhanced monitoring script that reveals the discrepancy
$fmpStatus = file_get_contents('http://localhost:8080/fmp-status?json&full');
$fmp = json_decode($fmpStatus, true);
$stateCounts = ['Idle' => 0, 'Running' => 0, 'Reading headers' => 0, /* etc */];
foreach ($fmp['processes'] as $process) {
$stateCounts[$process['state']]++;
}
$calculatedActive = count($fmp['processes']) - $stateCounts['Idle'];
$reportedActive = $fmp['active processes'];
echo "Calculated active: {$calculatedActive}\n";
echo "FPM reported active: {$reportedActive}\n";
echo "Discrepancy: " . ($calculatedActive - $reportedActive) . "\n";
?>
Related Issues
Original bug #76003 (supposedly fixed in April 2022)
GitHub issue #14212: "FPM Status: active processes greater than pm.max_children"
PHP Version
PHP 8.4.1 (fpm-fcgi) (built: Nov 21 2024 18:03:22) (NTS)
Copyright (c) The PHP Group
Built by https://github.com/docker-library/php
Zend Engine v4.4.1, Copyright (c) Zend Technologies
with Zend OPcache v8.4.1, Copyright (c), by Zend Technologies
Operating System
Debian GNU/Linux 12 (bookworm)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Évaluation
Cette issue n'a pas encore été évaluée.