Pendant la fête du 1er mai, l’équipe de service a mis à niveau l’environnement serveur du site Yitaobang, passant de PHP5.3 à PHP5.6, et après cette mise à jour réussie, le CPU du serveur a été surdimensionné à plus de 90 %, ce qui est resté élevé. Vérifiez le serveur et constatez que plusieurs processus PHP-FPM rendent la charge CPU trop élevée, ce qui empêche l’accès normal au site web. Réinstaller plusieurs fois l’environnement serveur et la version PHP, et même changer PHP en HHVM, ne peut pas résoudre le problème de la forte charge CPU.
Processus d’exploitation du serveur E-Taobang (diagramme d’architecture de service) : Client utilisateur → résolution des noms de domaine → nœud d’accélération Baidu Cloud (attaques CDN/cache/anti-DDOS/CC) → nœud Alibaba Cloud Shield (attaques anti-CC/DDOS/WAF) → serveur source ECS (CSS, JS et images pour la détournement CDN), et Alibaba Cloud Cloud Shield ne dispose d’aucune information d’attaque, il peut donc être complètement exclu comme attaque.
En regardant les journaux nginx, php-fpm et lents, il n’y a pas de facteurs anormaux, et je vois plusieurs informations de TIME_WAIT provenant de la commande netstat -n, qui est causée par le segment IP de 100.97.x.x (le dernier segment IP est l’adresse IP du service d’écoute Alibaba Cloud SLB).
Sans plus attendre, parlons de la solution spécifique, qui a finalement été prise en charge par l’équipe professionnelle d’exploitation et de maintenance du Yitao Gang (V Station Power), et le résultat final a été que la charge CPU causée par les paramètres de surveillance de service du SLB était trop élevée. Le service SLB original écoute le port 80 du protocole HTTP, et la vérification de santé du protocole http envoie régulièrement des requêtes http depuis plusieurs têtes, ce qui permet un accès continu à la lecture de HTTP, ce qui entraîne un php-fpm qui fait que la charge CPU dépasse 90 % pendant longtemps, et le quota d’utilisation spécifique dépend de la configuration de l’ECS. Après avoir changé le service de contrôle de santé, l’utilisation du CPU est hors ligne.
Si cette situation se produit également, changez la configuration de vérification de santé de l’écoute des services SLB du protocole HTTP 80 à la configuration du protocole TCP 80 comme suit :
|