Edit report at https://bugs.php.net/bug.php?id=52569&edit=1
ID: 52569
Comment by: dbetz at df dot eu
Reported by: mplomer at gmx dot de
Summary: Implement "ondemand" process-manager (to allow zero
children)
Status: Analyzed
Type: Feature/Change Request
Package: FPM related
PHP Version: 5.3.3
Assigned To: fat
Block user comment: N
Private report: N
New Comment:
Hello,
i know, but when i make an request, no child gets spawned.
My PHP-FPM has more pools. Every pool is listening to an different socket.
The mod_fastcgi 2.4.6 is patched, that it connects to the socket for the domain.
Example:
Hostname: www.domain.com has PHP Version 5.3.6
FPM Config for Pool is:
[domain.com]
listen = /etc/httpd/fastcgi/5.3.6-domain.com
user = u12345
group = nobody
pm = ondemand
pm.process_idle_timeout = 10
pm.min_delay_between_fork = 10000
pm.max_children = 5
When now an request for www.domain.com to the apache arrives, the apache looks
in the ldap for the PHP Version, then mod_fastcgi searches for socket
/etc/httpd/fastcgi/5.3.6-www.domain.com, if not existent for
/etc/httpd/fastcgi/5.3.6-domain.com (snips www. ). Now Apache connects over
mod_fastcgi to the correct socket, but no child gets spawned with pm = ondemand
With dynamic and static all works fine.
Any suggestions ?
Greetings,
Daniel
Previous Comments:
------------------------------------------------------------------------
[2011-07-06 12:12:34] [email protected]
This is normal.
the ONDEMAND pm has been made to avoid forking unnecessary children. Children
are forked when requests arrives.
Here is what I have on my side:
## conf:
pm = ondemand
pm.process_idle_timeout = 10
pm.min_delay_between_fork = 10000 # this to avoid the known bug
pm.max_children = 5
## log
[06-Jul-2011 18:05:42.236929] NOTICE: pid 2579, fpm_event_loop(), line 267:
ready to handle connections
[06-Jul-2011 18:05:43.237287] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 0 spare children
## at start, no children have been forked
[06-Jul-2011 18:05:44.237661] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 0 spare children
## I request a page and a child is forked to serve the page
[06-Jul-2011 18:05:44.902976] DEBUG: pid 2579, fpm_children_make(), line 411:
[pool direct] child 2580 started
[06-Jul-2011 18:05:44.902987] DEBUG: pid 2579, fpm_pctl_on_socket_accept(),
line 543: [pool direct] got accept without idle child available .... I forked,
now=1970813.831429
[06-Jul-2011 18:05:45.238081] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:46.238388] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:47.238889] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:48.239385] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:49.239671] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:50.240080] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:51.240520] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:52.241133] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:53.241648] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:54.242040] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
[06-Jul-2011 18:05:55.242414] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 1 spare children
## 10s (pm.process_idle_timeout) later, the child has been killed.
[06-Jul-2011 18:05:55.243492] DEBUG: pid 2579, fpm_got_signal(), line 76:
received SIGCHLD
[06-Jul-2011 18:05:55.243514] DEBUG: pid 2579, fpm_children_bury(), line 254:
[pool direct] child 2580 has been killed by the process managment after
10.340552 seconds from start
[06-Jul-2011 18:05:56.242905] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 0 spare children
[06-Jul-2011 18:05:57.243332] DEBUG: pid 2579,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool direct] currently 0
active children, 0 spare children
------------------------------------------------------------------------
[2011-07-06 10:44:25] dbetz at df dot eu
Hi Jerome,
what config options must i have in php-fpm.conf to get this working ?
I have tried following:
pm = ondemand
pm.min_spare_servers = 1
pm.max_children = 2000
pm.process_idle_timeout = 10s
pm.min_delay_between_fork = 100
but no child starts for this pool:
[06-Jul-2011 16:32:31.031068] DEBUG: pid 3417,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool default] currently
0 active children, 0 spare children
[06-Jul-2011 16:32:32.031349] DEBUG: pid 3417,
fpm_pctl_perform_idle_server_maintenance(), line 362: [pool default] currently
0 active children, 0 spare children
greets,
daniel
------------------------------------------------------------------------
[2011-07-05 19:15:08] [email protected]
I've upload 2 new versions of the patch for the ondemand PM:
1- fpm-ondemand.v7.patch applies to 5.4 SVN branch and trunk
2- fpm-ondemand.v7-5.3.patch applies to 5.3 SVN branch
it works except that the event is triggered more than once when a request is
coming. This makes the ondemand PM to fork more than it should do.
I'll look into that but if you have an idea, don't keep it for yourself.
Can you please test it ?
thx
++ jerome
------------------------------------------------------------------------
[2011-07-05 19:12:10] [email protected]
The following patch has been added/updated:
Patch Name: fpm-ondemand.v7-5.3.patch
Revision: 1309907530
URL:
https://bugs.php.net/patch-display.php?bug=52569&patch=fpm-ondemand.v7-5.3.patch&revision=1309907530
------------------------------------------------------------------------
[2011-07-05 19:08:22] [email protected]
The following patch has been added/updated:
Patch Name: fpm-ondemand.v7.patch
Revision: 1309907302
URL:
https://bugs.php.net/patch-display.php?bug=52569&patch=fpm-ondemand.v7.patch&revision=1309907302
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=52569
--
Edit this bug report at https://bugs.php.net/bug.php?id=52569&edit=1