sub-processes

Michael Grant <mgrant-q2t/[email protected]>
Newsgroups gmane.comp.web.fastcgi.devel
Message-ID <[email protected]>
I'm using mod-fastcgi in apache2.

In httpd.conf, I have this:

MinSpareServers     1
MaxSpareServers     20
StartServers        1

and in a php.fcgi script like this:

#!/bin/sh
PHP_FCGI_CHILDREN=10
export PHP_FCGI_CHILDREN
exec /usr/local/bin/php-cgi

What I see is 20 httpd instances, each with a process, and that
process has up to 10 children, pstree outputs something like this:

-+= 00000 root [swapper]
 \-+= 00001 root /sbin/init --
   \-+= 05763 root /usr/local/sbin/httpd -k start
     |--- 05764 www /usr/local/sbin/httpd -k start
     |-+- 05765 www /usr/local/sbin/httpd -k start
     | |-+= 05767 user /usr/local/bin/php-cgi
     | | |--- 05768 user /usr/local/bin/php-cgi
     | | |--- 05769 user /usr/local/bin/php-cgi
     | | |--- 05770 user /usr/local/bin/php-cgi
     | | |--- 05771 user /usr/local/bin/php-cgi
     | | |--- 05772 user /usr/local/bin/php-cgi
     | | |--- 05773 user /usr/local/bin/php-cgi
     | | |--- 05774 user /usr/local/bin/php-cgi
     | | |--- 05775 user /usr/local/bin/php-cgi
     | | |--- 05776 user /usr/local/bin/php-cgi
     | | \--- 05777 user /usr/local/bin/php-cgi
     | |-+= 05941 user /usr/local/bin/php-cgi
     | | |--- 05942 user /usr/local/bin/php-cgi
     | | |--- 05943 user /usr/local/bin/php-cgi
     | | |--- 05944 user /usr/local/bin/php-cgi
     | | |--- 05945 user /usr/local/bin/php-cgi
     | | |--- 05946 user /usr/local/bin/php-cgi
     | | |--- 05947 user /usr/local/bin/php-cgi
     | | |--- 05948 user /usr/local/bin/php-cgi
     | | |--- 05949 user /usr/local/bin/php-cgi
     | | |--- 05950 user /usr/local/bin/php-cgi
     | | \--- 05951 user /usr/local/bin/php-cgi
     | |-+= 05956 user /usr/local/bin/php-cgi
     | | |--- 05957 user /usr/local/bin/php-cgi
     | | |--- 05958 user /usr/local/bin/php-cgi
     | | |--- 05959 user /usr/local/bin/php-cgi
     | | |--- 05960 user /usr/local/bin/php-cgi
     | | |--- 05961 user /usr/local/bin/php-cgi
     | | |--- 05962 user /usr/local/bin/php-cgi
     | | |--- 05963 user /usr/local/bin/php-cgi
     | | |--- 05964 user /usr/local/bin/php-cgi
     | | |--- 05965 user /usr/local/bin/php-cgi
     | | \--- 05966 user /usr/local/bin/php-cgi
     | |-+= 05972 user /usr/local/bin/php-cgi
     | | |--- 05973 user /usr/local/bin/php-cgi
     | | |--- 05974 user /usr/local/bin/php-cgi
     | | |--- 05975 user /usr/local/bin/php-cgi
     | | |--- 05976 user /usr/local/bin/php-cgi
     | | |--- 05977 user /usr/local/bin/php-cgi
     | | |--- 05978 user /usr/local/bin/php-cgi
     | | |--- 05979 user /usr/local/bin/php-cgi
     | | |--- 05980 user /usr/local/bin/php-cgi
     | | |--- 05981 user /usr/local/bin/php-cgi
     | | \--- 05982 user /usr/local/bin/php-cgi
     | |-+= 05984 user /usr/local/bin/php-cgi
     | | |--- 05985 user /usr/local/bin/php-cgi
     | | |--- 05986 user /usr/local/bin/php-cgi
     | | |--- 05987 user /usr/local/bin/php-cgi
     | | |--- 05988 user /usr/local/bin/php-cgi
     | | |--- 05989 user /usr/local/bin/php-cgi
     | | |--- 05990 user /usr/local/bin/php-cgi
     | | |--- 05991 user /usr/local/bin/php-cgi
     | | |--- 05992 user /usr/local/bin/php-cgi
     | | |--- 05993 user /usr/local/bin/php-cgi
     | | \--- 05994 user /usr/local/bin/php-cgi
     | |-+= 05996 user /usr/local/bin/php-cgi
     | | |--- 05997 user /usr/local/bin/php-cgi
     | | |--- 05998 user /usr/local/bin/php-cgi
     | | |--- 05999 user /usr/local/bin/php-cgi
     | | |--- 06000 user /usr/local/bin/php-cgi
     | | |--- 06001 user /usr/local/bin/php-cgi
     | | |--- 06002 user /usr/local/bin/php-cgi
     | | |--- 06003 user /usr/local/bin/php-cgi
     | | |--- 06004 user /usr/local/bin/php-cgi
     | | |--- 06005 user /usr/local/bin/php-cgi
     | | \--- 06006 user /usr/local/bin/php-cgi
     | |-+= 06009 user /usr/local/bin/php-cgi
     | | |--- 06010 user /usr/local/bin/php-cgi
     | | |--- 06011 user /usr/local/bin/php-cgi
     | | |--- 06012 user /usr/local/bin/php-cgi
     | | |--- 06013 user /usr/local/bin/php-cgi
     | | |--- 06014 user /usr/local/bin/php-cgi
     | | |--- 06015 user /usr/local/bin/php-cgi
     | | |--- 06016 user /usr/local/bin/php-cgi
     | | |--- 06017 user /usr/local/bin/php-cgi
     | | |--- 06018 user /usr/local/bin/php-cgi
     | | \--- 06019 user /usr/local/bin/php-cgi
     | |-+= 06025 user /usr/local/bin/php-cgi
     | | |--- 06026 user /usr/local/bin/php-cgi
     | | |--- 06027 user /usr/local/bin/php-cgi
     | | |--- 06028 user /usr/local/bin/php-cgi
     | | |--- 06029 user /usr/local/bin/php-cgi
     | | |--- 06030 user /usr/local/bin/php-cgi
     | | |--- 06031 user /usr/local/bin/php-cgi
     | | |--- 06032 user /usr/local/bin/php-cgi
     | | |--- 06033 user /usr/local/bin/php-cgi
     | | |--- 06034 user /usr/local/bin/php-cgi
     | | \--- 06035 user /usr/local/bin/php-cgi
     | |-+= 06208 user /usr/local/bin/php-cgi
     | | |--- 06210 user /usr/local/bin/php-cgi
     | | |--- 06211 user /usr/local/bin/php-cgi
     | | |--- 06212 user /usr/local/bin/php-cgi
     | | |--- 06213 user /usr/local/bin/php-cgi
     | | |--- 06214 user /usr/local/bin/php-cgi
     | | |--- 06215 user /usr/local/bin/php-cgi
     | | |--- 06216 user /usr/local/bin/php-cgi
     | | |--- 06217 user /usr/local/bin/php-cgi
     | | |--- 06218 user /usr/local/bin/php-cgi
     | | \--- 06219 user /usr/local/bin/php-cgi
     | \-+= 07960 user /usr/local/bin/php-cgi
     |   |--- 07961 user /usr/local/bin/php-cgi
     |   |--- 07962 user /usr/local/bin/php-cgi
     |   |--- 07963 user /usr/local/bin/php-cgi
     |   |--- 07964 user /usr/local/bin/php-cgi
     |   |--- 07965 user /usr/local/bin/php-cgi
     |   |--- 07966 user /usr/local/bin/php-cgi
     |   |--- 07967 user /usr/local/bin/php-cgi
     |   |--- 07968 user /usr/local/bin/php-cgi
     |   |--- 07969 user /usr/local/bin/php-cgi
     |   \--- 07970 user /usr/local/bin/php-cgi
     |--- 05766 www /usr/local/sbin/httpd -k start
     |--- 05778 www /usr/local/sbin/httpd -k start
     |--- 05779 www /usr/local/sbin/httpd -k start
     |--- 05780 www /usr/local/sbin/httpd -k start
     |--- 05883 www /usr/local/sbin/httpd -k start
     |--- 05952 www /usr/local/sbin/httpd -k start
     |--- 05953 www /usr/local/sbin/httpd -k start
     |--- 05954 www /usr/local/sbin/httpd -k start
     |--- 05967 www /usr/local/sbin/httpd -k start
     |--- 05968 www /usr/local/sbin/httpd -k start
     |--- 05969 www /usr/local/sbin/httpd -k start
     |--- 05970 www /usr/local/sbin/httpd -k start
     |--- 06037 www /usr/local/sbin/httpd -k start
     |--- 06531 www /usr/local/sbin/httpd -k start
     |--- 06532 www /usr/local/sbin/httpd -k start
     |--- 06533 www /usr/local/sbin/httpd -k start
     |--- 06548 www /usr/local/sbin/httpd -k start
     |--- 06555 www /usr/local/sbin/httpd -k start
     |--- 06557 www /usr/local/sbin/httpd -k start
     \--- 06558 www /usr/local/sbin/httpd -k start

This seems excessive and it's unclear to me whether all these apache
processes are being used or needed.

I have experimented, if I set PHP_FCGI_CHILDREN=0, I only get 20
sub-processes for user 'user' and no sub-sub-processes for user,
however, performance isn't great.

Some more experimenting by writing some test scripts indicates that if
I have PHP_FCGI_CHILDREN=0 that requests are not handled
simultaneously.  The requests seem to be spread around to the multiple
waiting dynamic servers but serially.  I can post my scripts I used to
test this if needed.  In essence, if I do 2 POST operations
simultaneously, it takes twice as long as when I have
PHP_FCGI_CHILDREN>0.

PHP_FCGI_CHILDREN certainly needs to be greater than 0, but is there
some way I can keep it from multiplying like this?

Michael Grant
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.