[php-src] Issue #18956: PHP-FPM Process Count Inconsistencies

From: Date: Fri, 27 Jun 2025 09:34:51 +0000
Subject: [php-src] Issue #18956: PHP-FPM Process Count Inconsistencies
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-250337@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/18956 Author: sylvesterdamgaard ### 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 1. Set up PHP-FPM with moderate traffic (50+ concurrent requests) 2. Query FPM status endpoint: http://localhost/fmp-status?json&full` 3. Compare active processes field with manual state counting 4. Observe discrepancy between reported and actual active processes ## Expected Result - active processes should equal the sum of all non-idle process states - Count should reflect actual load and match manual calculations ## Actual Result - active processes shows 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 <?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](https://bugs.php.net/bug.php?id=76003) (supposedly fixed in April 2022) GitHub issue #14212: "FPM Status: active processes greater than pm.max_children" ### PHP Version ```plain 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)

« previous php.bugs (#250337) next »