Eu tenho um problema de memória com meus servidores (Debian 6.0) onde está instalado o Apache httpd 2.2, mod_php e APC.
Na verdade, parece que o httpd aloca toda a memória disponível (4GB) quando está esperando muito por uma resposta do Mongodb (30 segundos de tempo limite). Ok, eu sei, 30 segundos de tempo limite é muito alto. Essa longa espera leva o servidor front-end a começar a trocar memória, a média de carga alcança valores muito altos (em torno de 200) até que o hw esteja completamente travado.
Suponho que o problema esteja na configuração atual do httpd, porque MaxClients
está definido como 200 e o limite de memória do PHP é 128MB. No pior dos casos, precisamos apenas de cada mecanismo PHP com pelo menos 25 GB de RAM, mas temos 4 GB.
Minha humilde opinião é a seguinte: tendo 4GB, se encolhermos o memory_limit do php para 96MB, devemos suportar cerca de 48 garfos (ou seja, MaxClients
48).
Mesmo porque um httpd Apache bifurca um novo filho, a maior parte da memória é compartilhada com o processo pai.
MaxClients
Mas como saber exatamente quanta memória é compartilhada por todos os filhos do httpd e quanto é alocado por cada processo httpd do apache?
E falando sobre PHP e APC, mesmo nesse caso, como saber quanta memória é compartilhada e quanto é alocada por cada mecanismo?
Tags php debian memory apache-httpd