Это много экземпляров 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! Это нормально? Если нет, что мне с этим делать?

2 ответа

Решение

Да. Apache работает как традиционный демон Unix, в результате чего:

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

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

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

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

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

Другие вопросы по тегам