Hi Apache devs!

I have a question for you about the following users@ email thread:

-
https://lists.apache.org/thread.html/ba26440a53773426e29296569bec17692c77a4a3bd07e8b5331474c4@1464703063@%3Cusers.httpd.apache.org%3E

This one is about Yann's fix for the MinSpareThreads lower bound
calculation for worker/event:
http://svn.apache.org/viewvc?view=revision&revision=1737447

I was able to explain how it works in case of bucket = 1, but I have doubts
when buckets > 1. I've read event/worker code and IIUC:

1) min_spare_threads = threads_per_child * (num_buckets - 1) + num_buckets
2) max_spare_threads = min_spare_threads + threads_per_child * num_buckets
3) idle_spawn_rate controls the amount of new children created in
each perform_idle_server_maintenance run.
4) perform_idle_server_maintenance is called per bucket and calculates
max|min_spare_threads accordingly.

Rick's question in the email thread is about what happens when, with two
buckets and two processes for example, httpd reaches 50% of idle threads. I
made some calculations and an extra process should be indeed created, but
then killed because of the max_spare_threads limit. Is it going to keep
creating/destroying child processes or does idle_spawn_rate prevents it?

Final goal would be to add notes in (Min|Max)SpareThreads documentation to
warn users about the (good) side effects of setting ListenCoresBucketRatio
(there is a reference in the trunk doc but very generic, it would be great
to have more details IMHO).

Thanks a lot!

Regards,

Luca

Reply via email to