Почему Apache запускает так много процессов? Избыток оперативной памяти здесь?

17

Я заметил, что Apache выполняет несколько процессов на моем сервере LAMP (Ubuntu 10.10). Я просто работаю на сайте Wordpress с MySQL в качестве базы данных. Кажется, что www-data запускает apache2 больше, чем нужно (слишком много памяти), я прав:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start
Трент Скотт
источник
То же самое было и на моей предыдущей работе (CentOS). Я просто предположил, что все они были дочерними процессами, запускаемыми apache для каждого
запроса.
Хм. Я просто беспокоюсь о нехватке памяти в этой системе, так как это VPS.
Трент Скотт

Ответы:

19

Apache запускает несколько процессов, чтобы они были готовы при поступлении клиентского запроса. Процесс сервера запускается медленно, поэтому лучше иметь один, ожидающий клиента.

Для использования памяти вы должны принять во внимание размер RES (как показано сверху), который является объемом физической памяти, используемой задачей.

Как вы думаете, почему у вас слишком много процессов apache2, использующих слишком много памяти? Что вы ожидаете? Почему ты так ждешь?

Павел Бродацкий
источник
Это на облачном изображении. Просто кажется, что он использует больше памяти, чем нужно для такого маленького сайта. Реальная память: всего 496,36 МБ / 92,02 МБ свободного места. Пространство подкачки: всего 1024 МБ / 975,93 МБ свободного пространства
Трент Скотт,
1
@ Трентон: С ответом Павла это звучит хорошо. Если вы действительно не столкнетесь с сбоем в MySQL или чем-то из-за нехватки памяти, у вас все будет хорошо. Если это произойдет, вы должны искать конфигурации Apache, чтобы ограничить эти порожденные процессы.
Нандини Ананд
2
Linux будет пытаться сохранить большую часть используемой памяти. Если в него больше нечего вставить, он будет использовать оперативную память для кеша и дисковых буферов. Пустая память тратится впустую (если у вас не хватает ОЗУ).
Павел Бродацкий
3

Как объясняет ответ Павла, apache использует модель процесса на запрос с пулом процессов (или поток на запрос с помощью mpm_worker).

Вы можете уменьшить использование памяти с помощью веб-сервера на основе неблокирующего ввода-вывода, такого как nginx. Таким образом, серверу не нужно выделять процесс / поток для каждого соединения.

janneb
источник