Por que o Apache está executando tantos processos? RAM excessiva aqui?

17

Percebo que o Apache está executando vários processos no meu servidor LAMP (ubuntu 10.10). Estou apenas executando um site Wordpress com o MySQL como banco de dados. Parece que www-data está executando o apache2 mais do que deveria (usando muita memória também), estou correto:

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
Trent Scott
fonte
Este foi o mesmo caso no meu trabalho anterior (CentOS). Eu presumi que eles estavam todos criança processos do Apache é iniciado para cada request.We nunca enfrentou problemas performance / memória devido a isso, porém ...
Nandhini Anand
Hmm. Só estou preocupado com a falta de memória neste sistema, pois é um VPS.
Trent Scott

Respostas:

19

O Apache está executando vários processos para prepará-los quando uma solicitação do cliente é recebida. A geração de um processo do servidor é lenta; portanto, é melhor ter um esperando pelo cliente.

Para uso da memória, leve em consideração o tamanho RES da conta (conforme exibido na parte superior), que é a quantidade de memória física usada pela tarefa.

Por que você acha que possui muitos processos apache2 usando muita memória? O que você espera? Por que você espera isso?

Paweł Brodacki
fonte
Esta é uma imagem baseada em nuvem. Parece que está usando mais memória do que deveria para um site tão pequeno. Real memória: 496,36 MB no total / 92.02 MB espaço de troca livre: 1024 MB no total / 975,93 MB livre
Trent Scott
1
@ Trenton: Com a resposta do pawel, isso soa bem. A menos que você realmente encontre um travamento no mysql ou algo devido à falta de memória, você deve estar bem. Se isso acontecer, você deve procurar configurações do apache para limitar esses processos gerados.
Nandhini Anand
2
O Linux tentará manter a maior parte da memória usada. Se não houver mais nada para colocar, ele usará a RAM para buffers de cache e disco. Memória vazia é memória desperdiçada (se você não estiver ficando sem memória RAM).
Paweł Brodacki 14/05
3

Como a resposta de Pawel explica, o apache usa um modelo de processo por solicitação com um pool de processos (ou encadeamento por solicitação com mpm_worker).

Você pode reduzir o uso de memória usando um servidor da Web baseado em E / S sem bloqueio, como o nginx. Dessa forma, o servidor não precisa dedicar um processo / thread por conexão.

janneb
fonte
2

O Apache executará tantos processos quanto você o configurar. A configuração será diferente se você estiver usando os módulos de multiprocessamento prefork ou worker .

sciurus
fonte