> Am 14.04.2022 um 10:19 schrieb Yann Ylavic <ylavic....@gmail.com>:
>
> On Thu, Apr 14, 2022 at 9:12 AM Stefan Eissing <ste...@eissing.org> wrote:
>>
>> I have the feeling we are in need of some sort of stress tests on
>> the overall child management scenarios. Offering my help.
>
> Thanks Stefan for offering!
>
> Say we have a MPM event configuration like this:
> StartServers 1
> ServerLimit 4 or 16
> ThreadLimit 2
> ThreadsPerChild 2
> MinSpareThreads 2
> MaxSpareThreads 4
> MaxRequestWorkers 8
> MaxConnectionsPerChild 0
>
> The test would be to have 1 to 8 clients continuously requesting
> something that takes e.g. 1s to complete (mod_ratelimit or mod_proxy
> to a backend of yours that controls the rate?), and then issuing
> restarts simultaneously (graceful and ungraceful).
>
> Depending on ServerLimit (4 or 16) there should (or not) be spare room
> in the scoreboard for children processes to be spawned on restart. If
> not they will have to wait for the old generation ones to exit before
> new connections get accepted, but it should still "work".
>
> Not sure which of mod_status or the error_log is the best way to
> monitor the results..
>
> Is something like this conceivable? Or maybe someone has a better idea?
In test/modules/core/test_002_restarts.py there is now a start of this. Invoked
specifically with:
trunk> STRESS_TEST=1 pytest -vvv -k test_core_002
this uses the config given and runs h2load with 6 clients, each using 5
connections
over time to perform a number of total requests. Number of clients easily
tweakable.
The test in its current form fail, bc it expects all requests to succeed.
However, h2load
counts the remaining requests on a connection unsuccessful if the server
closes. So, maybe
we should use another test client or count 'success' differently.
Anyway, in test/gen/apache/logs/error_log one can see how mpm_event hits it
limits
on workers and concurrent connections. Like
" All workers are busy or dying, will shutdown 1 keep-alive connections"
or "AH03269: Too many open connections (1), not accepting new conns in this
process"
So, we need to define how we measure `success` and what we expect/not expect to
see
in the error log. I guess?
Kind Regards,
Stefan
>
>
> Cheers;
> Yann.