Estou executando um site intenso de tráfego com bastante conteúdo dinâmico, principalmente gerado pelo usuário.
O servidor é dedicado e possui um total de 4 processadores Intel Xeon CPU X3210 a 2.13GHz. Eu preciso conhecer os valores ideais para as diretivas do apache ServerLimit e MaxClients, considerando que o servidor possui 4 GB de RAM e o banco de dados MySQL é executado em um servidor separado. O painel é o DirectAdmin with CentOS.
Abaixo estão minhas diretrizes atuais, mas durante os horários de pico com mais de 5 mil usuários, um atraso importante é percebido - e não é culpa do MySQL, porque as páginas parecem ser geradas rapidamente (eu implementei um contador de tempo de geração de páginas), mas há um longo atraso na conexão até que a página comece a responder e seja enviada ao navegador.
<IfModule prefork.c>
StartServers 800
MinSpareServers 20
MaxSpareServers 60
ServerLimit 900
MaxClients 900
MaxRequestsPerChild 2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5
Devo mencionar que, ao monitorar o servidor usando o comando top, o uso da CPU nunca ultrapassa 20% a 30% no horário de pico. O servidor MySQL também tem um uso de 30 a 50% na época e estou trabalhando constantemente na correção de consultas lentas, mas esse é um problema diferente. Sei que não é um gargalo de banco de dados porque as páginas estáticas também demoram muito para serem carregadas nos horários de pico.
Quaisquer dicas para otimizar esses valores serão muito apreciadas, obrigado.
fonte
Você precisa obter o tamanho médio do seu processo apache. Com esse número e o tamanho total da sua RAM, você pode calcular a diretiva MaxClients. Lembre-se do seguinte: "Um servidor da web nunca deve ser trocado" ( Apache Performance Tuning )
O monitoramento com top ou htop está ok, mas você precisa de uma visão melhor de todas as estatísticas de seus servidores (CPU, RAM, E / S de disco, solicitações apache, consultas lentas do mysql, etc ...) com alguma ferramenta de monitoramento como gânglios ou munin para encontre possíveis gargalos.
fonte
Eu recomendo brincar com a ferramenta de benchmark (ab) do apache. Você pode brincar com os valores para correspondê-los ao seu fluxo de tráfego e ver que tipo de respostas você está obtendo até o tempo médio de carregamento e similares. Nesse ponto, você pode brincar com as configurações de que está falando para tentar otimizá-las. Você deve conseguir com ab controlar o desempenho otimista de cada ajuste no desempenho.
Realmente não seria prudente falar sobre suas configurações, mas você também precisa levar em consideração sua memória RAM, porque parece que você está consumindo muita memória RAM com essas configurações. Embora isso seja apenas especulação sem dados. O htop fornece uma boa leitura visual de seus recursos.
Além disso, sua média de carga pode dizer muito. Duvido que seu uso seja muito superior à quantidade total de núcleos entre 20 e 30% da CPU, mas é outro indicador de quão duro o servidor está realmente trabalhando.
fonte