Durante el festivo del Primero de Mayo, el equipo de servicio actualizó el entorno del servidor de la web de Yitaobang, de PHP5.3 a PHP5.6, y tras la actualización exitosa, la CPU del servidor se redujo a más del 90%, cifra que se ha mantenido alta. Revisa el servidor y descubre que varios procesos PHP-FPM hacen que la carga de la CPU sea demasiado alta, lo que hace que no se pueda acceder al sitio web con normalidad. Reinstalar el entorno del servidor y la versión de PHP varias veces, e incluso cambiar PHP a HHVM, no puede solucionar el problema de la alta carga de CPU.
Proceso operativo del servidor E-Taobang (diagrama de arquitectura de servicios): Cliente usuario → resolución de nombres de dominio → Nodo de Aceleración en la Nube Baidu (ataques CDN/caché/anti-DDOS/CC) → nodo Alibaba Cloud Shield (ataques anti-CC/DDOS/WAF) → servidor fuente ECS (CSS, JS e imágenes para desviación de CDN), y Alibaba Cloud Cloud Shield no tiene información de ataque, por lo que puede descartarse completamente como ataque.
Al observar los logs nginx, php-fpm y lentos, no hay factores anormales, y veo múltiples TIME_WAIT de información del comando netstat -n, que es causado por el segmento IP de 100.97.x.x (el último segmento IP es la dirección IP del servicio de escucha Alibaba Cloud SLB).
Sin más preámbulos, hablemos de la solución concreta, que finalmente fue gestionada por el equipo profesional de operación y mantenimiento de Yitao Gang (V Station Power), y el resultado final fue que la carga de CPU causada por la configuración de monitorización de servicio del SLB era demasiado alta. El servicio SLB original escucha el puerto 80 del protocolo HTTP, y la comprobación de estado del protocolo http envía regularmente solicitudes http desde múltiples cabezales, resultando en acceso continuo a la lectura de HTTP, lo que hace que php-fpm haga que la carga de la CPU supere el 90% durante mucho tiempo, y la cuota específica de uso de la CPU depende de la configuración de ECS. Tras cambiar el servicio de chequeo de salud, el uso de la CPU se desconecta.
Si esta situación también ocurre, cambia la configuración de la comprobación de estado de la escucha de servicios SLB del protocolo HTTP 80 a la configuración del protocolo TCP 80 de la siguiente manera:
|