You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by "motoda.hironori@fujitsu.com" <mo...@fujitsu.com> on 2021/03/12 02:28:50 UTC

[users@httpd] The number of child processes is less than MinSpareThreads.

In the following environment where multiple Listen directives are defined, the number of child processes may temporarily fall below MinSpareThreads after 6 requests are received at the same time and HTTP request processing is completed.
Is this a bug or a specification?

OS : Red Hat Enterprise Linux Server
MPM: worker

httpd.conf:
----------------------------------------------------
Listen 80
Listen 8080

ServerLimit             50
StartServers             5
MinSpareThreads          5
MaxSpareThreads         10
ThreadsPerChild          1
MaxRequestWorkers       50
MaxConnectionsPerChild   0
----------------------------------------------------

compile settings:
----------------------------------------------------
# /opt/apache24/bin/httpd -V
Server version: Apache/2.4.46 (Unix)
Server built:   Jan 15 2021 15:05:18
Server's Module Magic Number: 20120211:93
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1
Compiled using: APR 1.7.0, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_PROC_PTHREAD_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/opt/apache24"
 -D SUEXEC_BIN="/opt/apache24/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
----------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] The number of child processes is less than MinSpareThreads.

Posted by Daniel Ferradal <df...@apache.org>.
If anyone reads this thread, let's hope they do not interpret those
figures as a valid configuration for a threaded mpm aside from one
used to test a specific behaviour.

El vie, 12 mar 2021 a las 3:54, Eric Covener (<co...@gmail.com>) escribió:
>
> On Thu, Mar 11, 2021 at 9:29 PM motoda.hironori@fujitsu.com
> <mo...@fujitsu.com> wrote:
> >
> > In the following environment where multiple Listen directives are defined, the number of child processes may temporarily fall below MinSpareThreads after 6 requests are received at the same time and HTTP request processing is completed.
> > Is this a bug or a specification?
> >
> > OS : Red Hat Enterprise Linux Server
> > MPM: worker
> >
> > httpd.conf:
> > ----------------------------------------------------
> > Listen 80
> > Listen 8080
> >
> > ServerLimit             50
> > StartServers             5
> > MinSpareThreads          5
> > MaxSpareThreads         10
> > ThreadsPerChild          1
> > MaxRequestWorkers       50
> > MaxConnectionsPerChild   0
> > ----------------------------------------------------
>
> This is working as designed, the server checks only once per second to
> see if processes need to be started or killed based on the current
> idle threads.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>


-- 
Daniel Ferradal
HTTPD Project
#httpd help at Freenode

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Re: [users@httpd] The number of child processes is less than MinSpareThreads.

Posted by Yann Ylavic <yl...@gmail.com>.
On Mon, Mar 15, 2021 at 7:14 AM motoda.hironori@fujitsu.com
<mo...@fujitsu.com> wrote:
>
> > This is working as designed, the server checks only once per second to
> > see if processes need to be started or killed based on the current
> > idle threads.
>
> Is it okay for the number of child processes to fall below MinSpareThreads in this environment?
> If possible, please tell me the reason.

If there are 5 idle threads (e.g. StartServers=MinSpareThreads=5 with
ThreadsPerChild=1), when 6 connections/requests arrive and are being
handled then there is no idle thread anymore, so httpd has to make 5
new idle threads available (actually 5 children processes with
ThreadsPerChild=1) to honor MinSpareThreads=5.

Regards;
Yann.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


RE: [users@httpd] The number of child processes is less than MinSpareThreads.

Posted by "motoda.hironori@fujitsu.com" <mo...@fujitsu.com>.
Hi Eric,
Thank you.

> This is working as designed, the server checks only once per second to
> see if processes need to be started or killed based on the current
> idle threads.

Is it okay for the number of child processes to fall below MinSpareThreads in this environment?
If possible, please tell me the reason.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org

Re: [users@httpd] The number of child processes is less than MinSpareThreads.

Posted by Eric Covener <co...@gmail.com>.
On Thu, Mar 11, 2021 at 9:29 PM motoda.hironori@fujitsu.com
<mo...@fujitsu.com> wrote:
>
> In the following environment where multiple Listen directives are defined, the number of child processes may temporarily fall below MinSpareThreads after 6 requests are received at the same time and HTTP request processing is completed.
> Is this a bug or a specification?
>
> OS : Red Hat Enterprise Linux Server
> MPM: worker
>
> httpd.conf:
> ----------------------------------------------------
> Listen 80
> Listen 8080
>
> ServerLimit             50
> StartServers             5
> MinSpareThreads          5
> MaxSpareThreads         10
> ThreadsPerChild          1
> MaxRequestWorkers       50
> MaxConnectionsPerChild   0
> ----------------------------------------------------

This is working as designed, the server checks only once per second to
see if processes need to be started or killed based on the current
idle threads.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


[users@httpd] RE: The number of child processes is less than MinSpareThreads.

Posted by "motoda.hironori@fujitsu.com" <mo...@fujitsu.com>.
Hello,
We have issued the following bug report for this matter, so please reply to the bug report.
https://bz.apache.org/bugzilla/show_bug.cgi?id=65196

> The process status is shown in the output of the following command.
> # pstree -p `cat /opt/apache24/logs/httpd.pid`
> 
> In (3), all child processes have been terminated and new child processes have been created.
> Isn't it a bug that all child processes are temporarily terminated?
> If it's not a bug, please tell me why.
> 
> 
> (1) It is in the state where httpd is started.
> ----------------------------------------------
> Tue Mar 16 13:38:09 JST 2021
> httpd(4035)-+-httpd(4036)-+-{httpd}(4046)
>             |             `-{httpd}(4047)
>             |-httpd(4037)-+-{httpd}(4048)
>             |             `-{httpd}(4049)
>             |-httpd(4038)-+-{httpd}(4050)
>             |             `-{httpd}(4051)
>             |-httpd(4039)-+-{httpd}(4052)
>             |             `-{httpd}(4053)
>             `-httpd(4040)-+-{httpd}(4054)
>                           `-{httpd}(4055)
> ----------------------------------------------
> 
> (2) 6 requests are being processed.
> ----------------------------------------------
> Tue Mar 16 13:38:26 JST 2021
> httpd(4035)-+-httpd(4036)-+-{httpd}(4046)
>             |             `-{httpd}(4047)
>             |-httpd(4037)-+-{httpd}(4048)
>             |             `-{httpd}(4049)
>             |-httpd(4038)-+-{httpd}(4050)
>             |             `-{httpd}(4051)
>             |-httpd(4039)-+-{httpd}(4052)
>             |             `-{httpd}(4053)
>             |-httpd(4040)-+-{httpd}(4054)
>             |             `-{httpd}(4055)
>             |-httpd(4101)-+-{httpd}(4103)
>             |             `-{httpd}(4104)
>             |-httpd(4109)-+-{httpd}(4113)
>             |             `-{httpd}(4114)
>             |-httpd(4110)-+-{httpd}(4115)
>             |             `-{httpd}(4116)
>             |-httpd(4121)-+-{httpd}(4133)
>             |             `-{httpd}(4134)
>             |-httpd(4122)-+-{httpd}(4135)
>             |             `-{httpd}(4136)
>             |-httpd(4123)-+-{httpd}(4129)
>             |             `-{httpd}(4130)
>             `-httpd(4124)-+-{httpd}(4131)
>                           `-{httpd}(4132)
> ----------------------------------------------
> 
> (3) The following is the state transition after the request processing is completed.
> ----------------------------------------------
> Tue Mar 16 13:38:38 JST 2021
> httpd(4035)-+-httpd(4036)
>             |-httpd(4037)
>             |-httpd(4038)
>             |-httpd(4039)
>             |-httpd(4040)
>             |-httpd(4101)
>             |-httpd(4110)
>             |-httpd(4121)
>             |-httpd(4122)
>             |-httpd(4123)
>             `-httpd(4124)
> ----------------------------------------------
> Tue Mar 16 13:38:39 JST 2021
> httpd(4035)---httpd(4213)-+-{httpd}(4215)
>                           `-{httpd}(4216)
> ----------------------------------------------
> Tue Mar 16 13:38:40 JST 2021
> httpd(4035)-+-httpd(4213)-+-{httpd}(4215)
>             |             `-{httpd}(4216)
>             |-httpd(4221)-+-{httpd}(4225)
>             |             `-{httpd}(4226)
>             `-httpd(4222)-+-{httpd}(4227)
>                           `-{httpd}(4228)
> ----------------------------------------------
> Tue Mar 16 13:38:41 JST 2021
> httpd(4035)-+-httpd(4213)-+-{httpd}(4215)
>             |             `-{httpd}(4216)
>             |-httpd(4221)-+-{httpd}(4225)
>             |             `-{httpd}(4226)
>             |-httpd(4222)-+-{httpd}(4227)
>             |             `-{httpd}(4228)
>             |-httpd(4233)-+-{httpd}(4245)
>             |             `-{httpd}(4246)
>             |-httpd(4234)-+-{httpd}(4247)
>             |             `-{httpd}(4248)
>             |-httpd(4235)-+-{httpd}(4241)
>             |             `-{httpd}(4242)
>             `-httpd(4236)-+-{httpd}(4243)
>                           `-{httpd}(4244)
> ----------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


[users@httpd] RE: The number of child processes is less than MinSpareThreads.

Posted by "motoda.hironori@fujitsu.com" <mo...@fujitsu.com>.
> In the following environment where multiple Listen directives are defined, the number of child processes may temporarily
> fall below MinSpareThreads after 6 requests are received at the same time and HTTP request processing is completed.
> Is this a bug or a specification?

The process status is shown in the output of the following command.
# pstree -p `cat /opt/apache24/logs/httpd.pid`

In (3), all child processes have been terminated and new child processes have been created.
Isn't it a bug that all child processes are temporarily terminated?
If it's not a bug, please tell me why.


(1) It is in the state where httpd is started.
----------------------------------------------
Tue Mar 16 13:38:09 JST 2021
httpd(4035)-+-httpd(4036)-+-{httpd}(4046)
            |             `-{httpd}(4047)
            |-httpd(4037)-+-{httpd}(4048)
            |             `-{httpd}(4049)
            |-httpd(4038)-+-{httpd}(4050)
            |             `-{httpd}(4051)
            |-httpd(4039)-+-{httpd}(4052)
            |             `-{httpd}(4053)
            `-httpd(4040)-+-{httpd}(4054)
                          `-{httpd}(4055)
----------------------------------------------

(2) 6 requests are being processed.
----------------------------------------------
Tue Mar 16 13:38:26 JST 2021
httpd(4035)-+-httpd(4036)-+-{httpd}(4046)
            |             `-{httpd}(4047)
            |-httpd(4037)-+-{httpd}(4048)
            |             `-{httpd}(4049)
            |-httpd(4038)-+-{httpd}(4050)
            |             `-{httpd}(4051)
            |-httpd(4039)-+-{httpd}(4052)
            |             `-{httpd}(4053)
            |-httpd(4040)-+-{httpd}(4054)
            |             `-{httpd}(4055)
            |-httpd(4101)-+-{httpd}(4103)
            |             `-{httpd}(4104)
            |-httpd(4109)-+-{httpd}(4113)
            |             `-{httpd}(4114)
            |-httpd(4110)-+-{httpd}(4115)
            |             `-{httpd}(4116)
            |-httpd(4121)-+-{httpd}(4133)
            |             `-{httpd}(4134)
            |-httpd(4122)-+-{httpd}(4135)
            |             `-{httpd}(4136)
            |-httpd(4123)-+-{httpd}(4129)
            |             `-{httpd}(4130)
            `-httpd(4124)-+-{httpd}(4131)
                          `-{httpd}(4132)
----------------------------------------------

(3) The following is the state transition after the request processing is completed.
----------------------------------------------
Tue Mar 16 13:38:38 JST 2021
httpd(4035)-+-httpd(4036)
            |-httpd(4037)
            |-httpd(4038)
            |-httpd(4039)
            |-httpd(4040)
            |-httpd(4101)
            |-httpd(4110)
            |-httpd(4121)
            |-httpd(4122)
            |-httpd(4123)
            `-httpd(4124)
----------------------------------------------
Tue Mar 16 13:38:39 JST 2021
httpd(4035)---httpd(4213)-+-{httpd}(4215)
                          `-{httpd}(4216)
----------------------------------------------
Tue Mar 16 13:38:40 JST 2021
httpd(4035)-+-httpd(4213)-+-{httpd}(4215)
            |             `-{httpd}(4216)
            |-httpd(4221)-+-{httpd}(4225)
            |             `-{httpd}(4226)
            `-httpd(4222)-+-{httpd}(4227)
                          `-{httpd}(4228)
----------------------------------------------
Tue Mar 16 13:38:41 JST 2021
httpd(4035)-+-httpd(4213)-+-{httpd}(4215)
            |             `-{httpd}(4216)
            |-httpd(4221)-+-{httpd}(4225)
            |             `-{httpd}(4226)
            |-httpd(4222)-+-{httpd}(4227)
            |             `-{httpd}(4228)
            |-httpd(4233)-+-{httpd}(4245)
            |             `-{httpd}(4246)
            |-httpd(4234)-+-{httpd}(4247)
            |             `-{httpd}(4248)
            |-httpd(4235)-+-{httpd}(4241)
            |             `-{httpd}(4242)
            `-httpd(4236)-+-{httpd}(4243)
                          `-{httpd}(4244)
----------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org