Počas sviatkov Prvého mája servisný tím aktualizoval serverové prostredie webovej stránky Yitaobang z 5,3 PHP na 5,6 PHP a po úspešnej aktualizácii bol procesor servera nabitý na viac ako 90 %, čo zostáva vysoké. Skontrolujte server a zistite, že viaceré PHP-FPM procesy spôsobujú príliš vysokú záťaž CPU, čo spôsobuje, že webová stránka nie je dostupná normálne. Opakované preinštalovanie serverového prostredia a verzie PHP, dokonca aj zmena PHP na HHVM, nedokáže vyriešiť problém vysokej záťaže CPU.
Proces prevádzky servera E-Taobang (diagram architektúry služieb): Používateľský klient → riešenie doménových mien → Baidu Cloud Acceleration Node (CDN/caching/anti-DDOS/CC útoky) → Alibaba Cloud Shield (anti-CC/DDOS/WAF útoky) → ECS zdrojový server (CSS, JS a obrázky pre CDN presmerovanie) a Alibaba Cloud Cloud Shield nemá žiadne informácie o útoku, takže ho možno úplne vylúčiť ako útok.
Keď sa pozriem na nginx logy, php-fpm logy a slow logy, neexistujú žiadne abnormálne faktory a vidím viacero TIME_WAIT informácií z príkazu netstat -n, ktorý je spôsobený IP segmentom 100.97.x.x (posledný IP segment je IP adresa poslucháckej služby Alibaba Cloud SLB).
Bez ďalších rečí, poďme sa porozprávať o konkrétnom riešení, ktoré nakoniec riešil profesionálny prevádzkový a údržbársky tím Yitao Gang (V Station Power) a výsledkom bolo, že záťaž CPU spôsobená nastaveniami monitorovania služieb SLB bola príliš vysoká. Pôvodná SLB služba počúva HTTP protokolový port 80 a kontrola stavu http protokolu pravidelne odosiela HTTP požiadavky z viacerých hláv, čo vedie k nepretržitému prístupu na čítanie HTTP, čo spôsobí, že php-fpm dlhodobo dosiahne záťaž CPU nad 90 %, pričom konkrétna kvóta zaťaženia CPU závisí od konfigurácie ECS. Po zmene služby kontroly stavu CPU prejde do vypnutia prevádzky.
Ak nastane aj táto situácia, zmeňte konfiguráciu na kontrolu stavu SLB service listening z HTTP protokolu 80 na konfiguráciu TCP protokolu 80 nasledovne:
|