php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #60891 FPM status serving should be moved to the master process
Submitted: 2012-01-26 13:08 UTC Modified: 2013-02-18 00:35 UTC
From: erno dot kovacs at freemail dot hu Assigned: fat (profile)
Status: No Feedback Package: FPM related
PHP Version: 5.3.9 OS: Any
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: erno dot kovacs at freemail dot hu
New email:
PHP Version: OS:

 

 [2012-01-26 13:08 UTC] erno dot kovacs at freemail dot hu
Description:
------------
When the server is overloaded, you cant query the FPM status page, however it should be its primary goal: being able to check whats going on. This way this cool feature is pointless.


Test script:
---------------
fpm conf:
pm = dynamic
pm.max_children = 1
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1

test script:
<?
sleep(60);
?>

And while the only worker process is sleeping, send a query to the status page. It wont be served.

Expected result:
----------------
Status page.

Actual result:
--------------
Hanging

Patches

bug60891-v1.patch (last revision 2012-05-28 23:08 UTC) by fat@php.net)

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-01-26 14:57 UTC] ml at fatbsd dot com
for security reason and by design it's not possible to make the master process to 
listen to those requests.

The only possibility is to fork another process only to handle this. And this is 
quite a a big change. It's on my todo list but no ETA yet.

++ fat
 [2012-01-28 04:38 UTC] rasmus@php.net
-Status: Open +Status: Analyzed -Assigned To: +Assigned To: fat
 [2012-05-28 23:08 UTC] fat@php.net
The following patch has been added/updated:

Patch Name: bug60891-v1.patch
Revision:   1338246496
URL:        https://bugs.php.net/patch-display.php?bug=60891&patch=bug60891-v1.patch&revision=1338246496
 [2012-05-28 23:27 UTC] fat@php.net
Here is the first revision of the patch (it needs some verifications and there should be some missing free(), but it works 
on my side). It can be applied on the last 5.3 snapshot (not sure it will applies correctly on older version/revision).

Here's what's new:
- new FPM configuration item for pool: pm.status_allow which is unset by default. Add the names of the other pool you want 
to access from this pool (use a comma (,) as a separator). If one of the element is the char '*', then all pool are 
available from this pool status page

- call the status page of this pool adding a pool=xxx in the query string and there it's supposed to work


Exemple: for having a dedicated pool which only respond to the /status page and permit to see all pools status : add the 
following pool to your php-fpm.conf

[status]
listen=/tmp/status.sock
user = nobody ;use a low privilege user, nothing is needed here
group = nogroup
pm = ondemand
pm.max_children = 1 ;set a higher value if you need parallal requesting to the status page
pm.status_path = /status
pm.status_allow = * ; allow to see all pool status
chroot = /var/empty ; chroot to un empty directory for security reason
security.limit_extensions = .nonexistantextesionxxxxx ; limit to only one neverused extension

it'll only respond to the /status page (because of the pseudo random security.limit_extensions) and it's possible to see all 
pool status page:

http://xxx/status?pool=pool1
http://xxx/status?pool=pool2&full
http://xxx/status?pool=pool3&json&full

Waiting to here from you on this.

++ fat
 [2012-05-28 23:27 UTC] fat@php.net
-Status: Analyzed +Status: Feedback
 [2012-08-23 11:17 UTC] jasper at nerdsweide dot nl
Sounds good! I'm looking forward to these features.

> ... and there should be some missing free()
This means there is a memory-leak right?
 [2012-12-19 17:01 UTC] aderumier at odiso dot com
Hello,
any news about pm.status_allow = *   patch ?

I'm really looking for this, monitoring status in one page (integration with 
nagios/cacti).

Regards,

Alexandre Derumier
 [2013-02-18 00:35 UTC] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Sun Nov 19 01:31:42 2017 UTC