Consulta de ajuste do Apache

1

Estou tentando ajustar os parâmetros no apache para um site de alto tráfego. Minhas especificações são

Ram : 12 GB RAM
CPU : 16 core

Parâmetros Atuais

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2500
MaxClients 2500
MaxRequestsPerChild 10000
KeepAlive Off
KeepAliveTimeout 5
MaxKeepAliveRequests 100

Quais são os valores recomendados para esses parâmetros de acordo com as especificações do meu servidor?

Unnikrishnan
fonte
Por que você tem configurações duplicadas lá?
Jonas Schäfer

Respostas:

1

Há um ótimo tutorial neste site sobre como "calcular" as configurações. (Tutorial também abaixo, caso o site fique offline)

Antes de personalizar as diretivas, você precisa entender como elas funcionam. Deixe-me explicar em inglês simples. O servidor iniciará 2 processos filhos, determinados pela diretiva StartServers. Cada processo iniciará 20 threads, os quais são determinados pela diretiva ThreadsPerChild, o que significa que 2 processos podem atender apenas 40 conexões / clientes simultâneos (ou seja, 20 × 2 = 40). E daí se mais solicitações forem recebidas.

Agora, se houver mais usuários simultâneos, outro processo filho será iniciado, que poderá atender outros 20 usuários. Mas quantos processos filhos podem ser iniciados é controlado pelo parâmetro ServerLimit, isso significa que, na configuração acima, eu posso ter 10 processos filhos no total, cada processo filho pode lidar com 20 encadeamentos, no total 10 × 20 = 200 usuários simultâneos .

Mas há um problema, o número definido no MaxClients é 100 aqui, isto significa que, após 5 processos filhos, nenhum processo extra será iniciado, pois definimos um limite máximo para o MaxClients. Isso também significa que, se eu definir MaxClients como 500, após 10 processos filhos e 200 conexões, nenhum processo extra será iniciado e não poderemos atender mais de 200 clientes simultâneos, mesmo que tenhamos aumentado o parâmetro MaxClient. Nesse caso, também precisamos aumentar o ServerLimit para 500/20, ou seja, MaxClients / ThreadsPerChild = 25

Ok, agora você conhece as diretivas e como elas funcionam, o problema é como calcular as diretivas. Vamos pular para o cálculo dos valores da diretiva.

Você pode usar esse script de shell para determinar uma quantidade média de memória consumida por um processo Apache. Além disso, mostrará a quantidade total de memória consumida por todos os processos do Apache. Apenas descompacte e execute com o comando sh. Resultados precisos serão mostrados quando o servidor estiver sob carga pesada.

A saída

Uso de memória Apache (MB): 57,586 Tamanho médio do processo (MB): 10,2

Apache Memory Usage (MB): 57.586
Average Proccess Size (MB): 10.2   

se, em média, vamos supor que um processo Apache consome 50 MB de RAM e o servidor tenha 2048 MB, e você deseja deixar 512 MB para o restante dos processos;

MaxClients = (2048MB – 512MB)/10MB = 153.6 ~ 153
Christian Wörz
fonte