A utilização da CPU (%) não é a chave, a chave é média de carga (fila) e métricas de rede, métricas do apache, buffers etc. Balanceadores de carga são muito dispositivos simples, problemas, onde os LBs estão envolvidos na arquitetura, geralmente não estão relacionados aos ELBs, mas à natureza de como o resto das coisas funciona.
Para ver onde está o problema, você passa pelas seguintes etapas:
- Verifique se o apache está respondendo às solicitações locais, se não - o problema NÃO é o ELB
- Verifique os estados dos funcionários do apache (ou seja, mod_status), ajuste as configurações do MPM de acordo
- Verifique a média de carga da CPU, se a média de carga aumentar acima da contagem de CPU e o iowait aumentar - você tem problemas com IO
- Verifique se a persistência da conexão está ativada e se realmente é realmente necessária, se você realmente usa sessões em servidores da Web que exigem acesso à mesma instância da Web
- Verifique as configurações de manutenção de atividade do apache, desative-as ou defina um valor de tempo limite muito baixo
- Verifique se você tem o iptables habilitado na instância e se os parâmetros do kernel nf_conntrack_max e nf_conntrack_count estão configurados com valores mais altos. Se você não precisa - desative e não carregue módulos em todos os
- Testes de estresse de instâncias únicas com solicitações http (dica: ab, jmeter)
-
Verifique e ajuste os parâmetros do kernel de acordo:
net.core.wmem_max net.core.rmem_max net.core.netdev_max_backlog net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_no_metrics_save net.ipv4.tcp_timestamps net.ipv4.tcp_fin_timeout net.ipv4.tcp_max_tw_buckets net.ipv4.tcp_tw_recycle net.ipv4.tcp_synack_retries net.ipv4.tcp_keepalive_time net.netfilter.nf_conntrack_acct net.netfilter.nf_conntrack_generic_timeout net.netfilter.nf_conntrack_tcp_timeout_syn_sent net.netfilter.nf_conntrack_tcp_timeout_syn_recv net.netfilter.nf_conntrack_tcp_timeout_established net.netfilter.nf_conntrack_tcp_timeout_fin_wait net.netfilter.nf_conntrack_tcp_timeout_close_wait net.netfilter.nf_conntrack_tcp_timeout_last_ack net.netfilter.nf_conntrack_tcp_timeout_time_wait net.netfilter.nf_conntrack_tcp_timeout_close net.netfilter.nf_conntrack_tcp_timeout_max_retrans net.netfilter.nf_conntrack_tcp_timeout_unacknowledged net.netfilter.nf_conntrack_icmp_timeout net.netfilter.nf_conntrack_events_retry_timeout net.ipv4.netfilter.ip_conntrack_generic_timeout net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait net.ipv4.netfilter.ip_conntrack_tcp_timeout_close net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans net.ipv4.netfilter.ip_conntrack_icmp_timeout net.netfilter.nf_conntrack_tcp_loose net.netfilter.nf_conntrack_max net.nf_conntrack_max net.netfilter.nf_conntrack_count
O Apache não está respondendo depois disso? Não é culpa da ELB.