Sugiro um ou mais dos seguintes procedimentos:
- Mova esse cliente para um VPS separado.
- Diminua drasticamente o MaxClients, por exemplo, 10
- Use o nginx em vez do Apache ou o verniz na frente do Apache
- Use o cloudflare
Eu tenho um VPS que executa vários sites Opencart e, na maior parte, executa a tarefa muito bem.
Spec:
CPU
GenuineIntel, CPU Intel (R) Xeon (R) E5-2665 0 @ 2.40GHz
Versão
Parallels Plesk Panel v11.5.30_build115130819.13 os_CentOS 6
OS
CentOS 6.2 (Final)
RAM:
4 GB
No entanto, tenho um cliente que costuma executar promoções populares que geram tráfego no site, o que pode rondar de 3000 a 4000 visitantes em 1 a 2 horas, muitos dos quais estão tentando concluir o processo de pedido.
Quando essas promoções são executadas, posso assistir à redução da RAM a um ponto em que ela alcança 100% de utilização e faz com que todos os sites e até mesmo o acesso SSH ao VPS sejam perdidos com o log de erros:
[error] (12)Cannot allocate memory: mod_fcgid: can't run /var/www/cgi-bin/cgi_wrapper/cgi_wrapper [warn] (12)Cannot allocate memory: mod_fcgid: spawn process /var/www/cgi-bin/cgi_wrapper/cgi_wrapper error
Reiniciar o Apache ou o VPS não ajuda e a utilização da RAM só volta ao normal quando as pessoas desistem e param de acessar o site continuamente. Mesmo aumentando a memória RAM para 6GB não resolveu o problema, mas eu suponho que isso será o mesmo com qualquer quantidade razoável de RAM.
Eu relatei isso ao meu anfitrião que tem sido bastante inútil. Eles disseram que eles otimizaram a maneira como o Apache funciona, mas ainda estou vendo o mesmo problema em todas as promoções, causando uma interrupção completa.
Após a otimização, minha configuração do Apache é assim:
IfModule prefork.c
StartServers 2
MinSpareServers 2
MaxSpareServers 5
ServerLimit 80
MaxClients 200
MaxRequestsPerChild 400IfModule worker.c
StartServers 1
MaxClients 10
MinSpareThreads 1
MaxSpareThreads 4
ThreadsPerChild 25
MaxRequestsPerChild 0
Eu também notei que eles definiram o KeepAlive Off.
Esse mesmo cliente tem uma promo em execução no futuro próximo e eu adoraria chegar ao fundo disso para garantir que o site permaneça ativo durante todo o processo.
Todas as sugestões serão muito bem-vindas e, por favor, pergunte se mais informações são necessárias.
Obrigado antecipadamente.
Sugiro um ou mais dos seguintes procedimentos:
Você está executando o apc? Se não, eu instalaria isso e verificaria se a situação melhora. Eu também olharia as configurações do php fcgi. Como o php é executado separadamente do apache no fcgi, não acredito que seus problemas estejam com o apache.
Tags memory vps traffic apache-2.2 centos