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

Нормально ли такое количество экземпляров Apache?

Запускаем версию Apache 2.2.8-1ubuntu0.15 на нашем экземпляре VPS Ubuntu 8.04.4 LTS \n \l, как я определил, задав вопрос этот вопрос.

Когда я выдаю pgrep apache2, Я получаю следующее:

 2691
24517
25330
25669
25672
25795
25796
25809
25825
26401
26402

Это 11 отдельных экземпляров apache2! Это нормально? Если нет, что мне делать?

Да. Apache работает как традиционный демон unix, посредством чего:

  • Основная программа ожидает входящего запроса (блоки на сокете)
  • После получения запроса используется системный вызов fork (), который заставляет основной процесс клонировать себя
  • Затем основной процесс снова ждет другого запроса.
  • Разветвленная копия переходит к обработке запроса и завершает работу.

Разветвление действительно требует времени, поэтому Apache предварительно разветвляет несколько экземпляров в ожидании обработки нескольких запросов. Это полностью настраивается через /etc/apache2.conf. Я не могу сейчас вспомнить точные директивы, но, вероятно, это объяснено в комментариях.

Если вы ожидаете обрабатывать внезапные всплески одновременных HTTP-запросов, тогда вам будет полезно иметь много экземпляров, готовых принять их. Компромисс в том, что это потребляет больше памяти.

Если вы хотите уменьшить это число, используйте директивы MinSpareServers и MaxSpareServers:

http://httpd.apache.org/docs/2.2/mod/prefork.html