Edit report at https://bugs.php.net/bug.php?id=60891&edit=1

 ID:                 60891
 Updated by:         f...@php.net
 Reported by:        erno dot kovacs at freemail dot hu
 Summary:            FPM status serving should be moved to the master
                     process
-Status:             Analyzed
+Status:             Feedback
 Type:               Bug
 Package:            FPM related
 Operating System:   Any
 PHP Version:        5.3.9
 Assigned To:        fat
 Block user comment: N
 Private report:     N

 New Comment:

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


Previous Comments:
------------------------------------------------------------------------
[2012-05-28 23:08:16] f...@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-01-26 14:57:22] 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-26 13:08:01] 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


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60891&edit=1

Reply via email to