Tijdens de 1 Mei feestdag heeft het serviceteam de serveromgeving van de Yitaobang-website geüpgraded van PHP5.3 naar PHP5.6, en na de succesvolle upgrade werd de server-CPU opgeblazen tot meer dan 90%, wat hoog is gebleven. Controleer de server en ontdek dat meerdere PHP-FPM-processen ervoor zorgen dat de CPU-belasting te hoog is, waardoor de website niet normaal toegankelijk is. Het meerdere keren opnieuw installeren van de serveromgeving en PHP-versie, en zelfs PHP veranderen naar HHVM, kan het probleem van hoge CPU-belasting niet oplossen.
E-Taobang serverbedieningsproces (servicearchitectuurdiagram): Gebruikersclient → domeinnaamresolutie → Baidu Cloud Acceleration Node (CDN/caching/anti-DDOS/CC-aanvallen) → Alibaba Cloud Shield-node (anti-CC/DDOS/WAF-aanvallen) → ECS-bronserver (CSS, JS en images voor CDN-omleiding), en Alibaba Cloud Cloud Shield bevat geen aanvalsinformatie, dus het kan volledig worden uitgesloten als een aanval.
Als ik kijk naar de nginx-logs, php-fpm-logs en trage logs, zijn er geen abnormale factoren, en ik zie meerdere TIME_WAIT informatie van het netstat -n-commando, dat wordt veroorzaakt door het IP-segment van 100.97.x.x (het laatste IP-segment is het IP-adres van de Alibaba Cloud SLB-luisterdienst).
Zonder verder oponthoud, laten we het hebben over de specifieke oplossing, die uiteindelijk werd opgelost door het professionele bedienings- en onderhoudsteam van de Yitao Gang (V Station Power), en het eindresultaat was dat de CPU-belasting veroorzaakt door de servicemonitoring-instellingen van de SLB te hoog was. De oorspronkelijke SLB-service luistert naar HTTP-protocolpoort 80, en de http-protocol health check stuurt regelmatig http-verzoeken van meerdere hoofden, wat resulteert in continue toegang om HTTP te lezen, waardoor php-fpm de CPU-belasting lange tijd meer dan 90% bereikt, en de specifieke CPU-belastingsquota hangt af van de configuratie van ECS. Na het wijzigen van de gezondheidscheckdienst gaat het CPU-gebruik offline.
Als deze situatie zich ook voordoet, verander dan de health check-configuratie van SLB-serviceluisteren van HTTP-protocol 80 naar TCP-protocol 80-configuratie als volgt:
|