So let's take a look how many processes there are going to be created when we start Apache after not customized installation?
All descriptions and examples are based on the default configuration in the Ubuntu:
# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"
The installation itself is as simple as:
# aptitude install apache2
By default when you start Apache with its default config it will look like this:
# ps -AHl | egrep 'apach|httpd' 1 S 0 25528 1 0 80 0 - 1348 poll_s ? 00:00:00 apache2 5 S 33 25530 25528 0 80 0 - 1291 skb_re ? 00:00:00 apache2 5 S 33 25532 25528 0 80 0 - 56702 pipe_w ? 00:00:00 apache2 5 S 33 25533 25528 0 80 0 - 56702 pipe_w ? 00:00:00 apache2
A closer look at the configuration in /etc/apache2/apache2.conf reveals more then one section that could be in control of your http server. So which one is our?
# grep -B7 'IfModule mpm_prefork_module' apache2.conf # prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves# grep -A8 'IfModule mpm_' apache2.conf StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 # worker MPM --StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0 --StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestsPerChild 0
Well, if you paid attention when installing the server then you know what MPM you installed. If you don't remember than we can find this by running:
# apache2ctl -l Compiled in modules: core.c mod_log_config.c mod_logio.c worker.c < - - - this is the one we can customize http_core.c mod_so.cFrom the doc Apache MPM worker we know what the above options should mean as well.
Base on line # 2 (StartServers) we should see 2 processes. But when you scroll up we can see 4! So what is going on there? To understand the situation we need to look at the processes and threads statistics together.StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0
# ps -lFmC apache2 F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD 1 - root 25528 1 0 - - - 1348 - 2580 - Apr04 ? 00:00:00 /usr/sbin/apache2 -k start 1 S root - - 0 80 0 - - poll_s - 0 Apr04 - 00:00:00 - 5 - www-data 25530 25528 0 - - - 1291 - 1784 - Apr04 ? 00:00:00 /usr/sbin/apache2 -k start 5 S www-data - - 0 80 0 - - skb_re - 0 Apr04 - 00:00:00 - 5 - www-data 25532 25528 0 - - - 56736 - 2776 - Apr04 ? 00:00:00 /usr/sbin/apache2 -k start 5 S www-data - - 0 80 0 - - pipe_w - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - inet_c - 1 Apr04 - 00:00:00 - 5 - www-data 25533 25528 0 - - - 56736 - 2768 - Apr04 ? 00:00:00 /usr/sbin/apache2 -k start 5 S www-data - - 0 80 0 - - pipe_w - 0 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - futex_ - 1 Apr04 - 00:00:00 - 1 S www-data - - 0 80 0 - - inet_c - 1 Apr04 - 00:00:00 -
At the end everything is as it suppose to be. From all the 4 Apache processes the first 2 are for management and communication and then the last 2 are actually the one we defined in our config file to process the client's requests. All lines with the 'futex' show as well that there is 25 worker threads in the last to processes so this is controlled by the parameter ThreadsPerChild and is correct as well.
No comments:
Post a Comment