Назад | Перейти на главную страницу

Интерпретация состояния сервера Apache httpd для connstotal vs busyworkers с событием MPM

Я наблюдаю поведение, из-за которого наши серверы apache httpd не отвечают в производственной среде с очень высокой степенью параллелизма соединения. Серверы настроены на использование режима событий MPM. Я слежу за серверами с помощью mod_status, который дает мне некоторую информацию о внутреннем состоянии серверов. В процессе производства я вижу очень похожие значения для ConnsTotal и BusyWorkers:

Processes: 16
BusyWorkers: 1418
IdleWorkers: 182
ConnsTotal: 1460

Я пытаюсь воспроизвести это с той же конфигурацией, аналогичным оборудованием в тестовой среде, и я вижу очень разные значения для этих полей:

Processes: 50
BusyWorkers: 4730
IdleWorkers: 170
ConnsTotal: 700

У них обоих одинаковый конфиг:

<IfModule mpm_event_module>
    StartServers              3
    MinSpareThreads          75
    MaxSpareThreads         500
    ThreadLimit             100
    ServerLimit              50
    ThreadsPerChild         100
    MaxRequestWorkers      5000
    MaxConnectionsPerChild    0
</IfModule>

В случае с производственными серверами кажется, что серверы перестают отвечать из-за нехватки памяти. А в тестовой среде я считаю, что запросы отбрасываются из-за ограничения на количество рабочих процессов.

  1. В чем разница между ConnsTotal и BusyWorkers в одном случае, а в другом - нет?
  2. Какова реальная семантика ConnsTotal по сравнению с Busyworkers?
  3. Как объяснить, что площадь, занимаемая 1418 рабочими, может быть в 2-3 раза больше, чем площадь 4700 рабочих?

Спасибо