Durante o feriado do Dia do Trabalhador, a equipe de serviço atualizou o ambiente de servidores do site Yitaobang, de PHP5.3 para PHP5.6, e após a atualização bem-sucedida, a CPU do servidor foi reduzida para mais de 90%, o que permaneceu alto. Verifique o servidor e veja que múltiplos processos PHP-FPM fazem com que a carga da CPU seja muito alta, resultando na impossibilidade de acessar o site normalmente. Reinstalar o ambiente do servidor e a versão PHP várias vezes, e até mesmo mudar PHP para HHVM, não resolve o problema da alta carga da CPU.
Processo operacional do servidor E-Taobang (diagrama da arquitetura de serviços): Cliente de usuário → resolução de nomes de domínio → Baidu Cloud Acceleration Node (ataques CDN/cache/anti-DDOS/CC) → nó Alibaba Cloud Shield (anti-CC/DDOS/WAF) → servidor de origem ECS (CSS, JS e imagens para desvio de CDN), e o Alibaba Cloud Cloud Shield não possui nenhuma informação de ataque, podendo ser completamente descartado como ataque.
Olhando os logs nginx, php-fpm e logs lentos, não há fatores anormais, e vejo múltiplas informações de TIME_WAIT do comando netstat -n, que é causado pelo segmento IP de 100.97.x.x (o último segmento IP é o endereço IP do serviço de escuta Alibaba Cloud SLB).
Sem mais delongas, vamos falar sobre a solução específica, que finalmente foi tratada pela equipe profissional de operação e manutenção da Yitao Gang (V Station Power), e o resultado final foi que a carga da CPU causada pelas configurações de monitoramento de serviço do SLB era muito alta. O serviço SLB original ouve a porta 80 do protocolo HTTP, e a verificação de estado do protocolo http enviará regularmente requisições http de múltiplas cabeças, resultando em acesso contínuo ao HTTP de leitura, resultando em php-fpm fazendo com que a carga da CPU alcance mais de 90% por um longo período, e a cota específica de uso da CPU depende da configuração do ECS. Após mudar o serviço de verificação de saúde, o uso da CPU fica offline.
Se essa situação também ocorrer, altere a configuração de verificação de saúde do serviço SLB de protocolo HTTP 80 para a configuração do protocolo TCP 80 da seguinte forma:
|