O Apache está usando muita memória do meu servidor, causando uma falha. Eu tenho 4 GB de RAM no servidor.
Estou tentando ajustar as configurações do Apache para melhorar seu desempenho, mas sou bastante novo nisso.
Eu estava tentando seguir o conselho deste artigo, mas não sei como calcular as coisas e parece que estou piorando.
Meu top tem a seguinte redação:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd
11717 apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd
11659 apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
Então, seria
MaxClients = 3000/ (322-37) = 10
Isso está certo? Além disso, quais devem ser os valores para outros parâmetros, como MinSpareServers, MaxSpareServers, MaxRequestsPerChild, StartServers, MinSpareThreads, MaxSpareThreads, ThreadsPerChild, MaxRequestsPerChild?
Alguém poderia me ajudar?
Atualizar
Eu tentei o que vocês sugeriram. Funciona, mas apenas por um tempo. Após algum tempo após o servidor ser iniciado, o uso da memória continua aumentando e nunca diminui.
Quero dizer, depois de iniciar o servidor, vamos assumir que existem 500 usuários online. O servidor consumirá X RAM. Duas horas depois, com os mesmos 500 usuários on-line, o servidor consumirá 10X RAM.
Existe uma maneira de evitar isso ou terei que continuar assistindo o servidor e reiniciando-o de tempos em tempos?
fonte
Respostas:
O principal parâmetro para ajustar o uso da memória do Apache será
MaxClients
. Um valor muito baixo e você ficará sem slots disponíveis para atender às solicitações do cliente. Demasiada e você gastará toda a sua RAM e começará a usar o espaço de troca que prejudicará o desempenho (pode parecer uma falha do servidor).Uma maneira de ajustar
MaxClients
é observar o uso da memória do sistema e ajustar a configuração conforme necessário. Se o servidor começar a trocar, edite-o para baixo. Se o servidor tiver memória livre, coloque-o.Você também pode estimar o valor máximo observando o uso de memória do Apache. Iniciar
top
e pressioneM
para classificar os processos de memória. Você deve ver algo como:Subtraia as colunas RES e SHR para obter o uso aproximado de memória por instância do Apache. Nesse caso, é cerca de 16 MB. Se eu tiver 4 GB de RAM e desejar que 3 GB sejam usados para o Apache, minha configuração de MaxClients será em torno de:
Portanto, nesse caso, eu poderia começar com um valor de 150-200, mas observaria o uso da memória e, se alguma vez começar a usar o swap, diminuiria o MaxClients de 10 a 20%. Observe também que o valor de 3 GB é apenas um exemplo aleatório. Em servidores executando apenas o Apache, posso usar quase todos os 4 GB. Em outros casos, talvez eu queira apenas 1 ou 2 GB para o Apache, salve o restante para outros aplicativos, o sistema ou o cache.
Editar: Responder a perguntas adicionais
Geralmente, não há valores mágicos do MaxClients ou dos outros parâmetros de configuração do Apache que tornarão seu servidor repentinamente duas vezes mais rápido. Alguns servidores parecerão funcionar perfeitamente, seja MaxClients 10 ou 1000. Há dois casos principais em que a configuração MaxClients é "incorreta":
Embora eu não conheça os detalhes do seu servidor, aplicativo ou tráfego, posso sugerir os seguintes valores de configuração como ponto de partida. Experimente, monitore a carga e o uso do servidor e altere as configurações conforme necessário.
fonte