Почему общее количество потоков Apache2 больше, чем MaxRequestWorkers

Почему общее количество потоков Apache2 больше, чем MaxRequestWorkers

Недавно я перенес свой mpm с perfork на event (а также mod_php (php7.0) на php-fpm (proxy_fgi)). Я оценил максимальную нагрузку одновременных соединений примерно в 300. Поэтому я установил следующую конфигурацию в mpm_event.conf

StartServers                     5
MinSpareThreads          25
MaxSpareThreads          75
ThreadLimit                      64
ThreadsPerChild          35
MaxRequestWorkers         350
MaxConnectionsPerChild   0

Теперь я вижу странное поведение, когда наблюдаю за процессом apache2 и общим количеством потоков с помощью ps.

Обычно у меня около 12-13 общих процессов apache2 ( ps aux | grep apache2 | wc -l). Если один из них считать родительским... то получается около 10-11 дочерних. Далее, если я увижу общее количество потоков из apache2 с

ps -o nlwp $(pidof apache2) | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'

Я уже давно наблюдаю за темой 408. Поэтому у меня такие вопросы:

  • как возможно, что общее количество потоков превышает MaxRequestWorkers (350)
  • как возможно, что общее количество дочерних процессов превышает StartServers (5)
  • Каково обоснование ошибки 408? (12*34?) и достигает ли мой трафик лимита?

Заранее благодарны за Вашу помощь

решение1

Я наблюдаю похожее поведение. При значении MaxRequestWorkers по умолчанию 150 я достигаю 301 потока - т.е. 1 родительский и 2* потока MaxRequestWorkers.

Я проверил это, установив MaxRequestWorkers на 40, и получил значение 81.

Может ли кто-нибудь подтвердить такое поведение Apache?

PS Я запускаю Apache2 как prefork, т.е. ThreadLimit и ThreadsPerChild, ИМХО, не используются.

Связанный контент