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:

Hm .. i can only see tons of:
20983 poll([{fd=4, events=POLLIN}], 1, 108) = 0 (Timeout)
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 852647570}) = 0
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 852702140}) = 0
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 852754708}) = 0
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 852807040}) = 0
20983 poll([{fd=4, events=POLLIN}], 1, 130) = 0 (Timeout)
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 983213866}) = 0
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 983267442}) = 0
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 983323753}) = 0
20983 clock_gettime(CLOCK_MONOTONIC, {4578918, 983368483}) = 0

and then thousands of:

20983 munmap(0xae151000, 1040)          = 0
20983 munmap(0xae150000, 1040)          = 0
20983 munmap(0xae14f000, 1040)          = 0
20983 munmap(0xae14e000, 1040)          = 0
20983 munmap(0xae14d000, 1040)          = 0

The socket gets created here:
20983 socket(PF_FILE, SOCK_STREAM, 0)   = 6
20983 setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
20983 
unlink("/etc/httpd/fastcgi/dynamic/5-53LATEST-wordpressmit.imageupgrade2.domainfactory-kunde.de")
 = -1 ENOENT (No such file or directory)
20983 umask(0111)                       = 027
20983 bind(6, {sa_family=AF_FILE, 
path="/etc/httpd/fastcgi/dynamic/5-53LATEST-wordpressmit.imageupgrade2.domainfactory-kunde.de"},
 110) = 0
20983 umask(027)                        = 0111
20983 listen(6, 128)                    = 0

When making an request nothing happens in the strace :-(


Previous Comments:
------------------------------------------------------------------------
[2011-07-08 05:43:44] f...@php.net

You can strace to see what happens:

set log_level to debug
set daemonize to no
then run something like
strace -f -s 1024 -o /tmp/php-fpm.strace.log /path/to/php-fpm

------------------------------------------------------------------------
[2011-07-08 05:38:31] dbetz at df dot eu

If i can help you with debug informations, pls tell me what information you 
need.
eg traces or gdb ?

Greetings,

------------------------------------------------------------------------
[2011-07-07 02:34:46] dbetz at df dot eu

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

------------------------------------------------------------------------
[2011-07-06 12:12:34] f...@php.net

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

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


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

Reply via email to