Podczas święta majowego zespół serwisowy zaktualizował środowisko serwera strony Yitaobang z PHP5,3 do PHP5,6, a po pomyślnej aktualizacji CPU serwera zostało zużyte do ponad 90%, co utrzymuje się na wysokim poziomie. Sprawdź serwer i okazuje się, że wiele procesów PHP-FPM powoduje zbyt duże obciążenie CPU, przez co strona nie jest normalnie dostępna. Wielokrotna instalacja środowiska serwerowego i wersji PHP, a nawet zmiana PHP na HHVM, nie rozwiąże problemu dużego obciążenia CPU.
Proces działania serwera E-Taobang (diagram architektury usług): Klient użytkownika → rozwiązywanie nazw domen → węzeł Baidu Cloud Acceleration Node (ataki CDN/caching/anti-DDOS/CC) → węzeł Alibaba Cloud Shield (ataki anty-CC/DDOS/WAF) → serwer źródłowy ECS (CSS, JS i obrazy do przekierowania CDN), a Alibaba Cloud Cloud Shield nie posiada żadnych informacji o ataku, więc można go całkowicie wykluczyć jako atak.
Patrząc na logi nginx, logi php-fpm i slow logs, nie ma żadnych nieprawidłowych czynników, a z polecenia netstat -n pojawia się wiele TIME_WAIT informacji, które są spowodowane segmentem IP 100.97.x.x (ostatni segment IP to adres IP usługi słuchania Alibaba Cloud SLB).
Bez zbędnej zwłoki porozmawiajmy o konkretnym rozwiązaniu, które ostatecznie został opracowany przez profesjonalny zespół operacyjny i konserwacyjny Yitao Gang (V Station Power), a ostatecznym efektem było zbyt duże obciążenie CPU spowodowane ustawieniami monitorowania usług SLB. Oryginalna usługa SLB nasłuchuje portu protokołu HTTP 80, a sprawdzenie stanu protokołu HTTP regularnie wysyła żądania HTTP z wielu głowic, co skutkuje ciągłym dostępem do odczytu HTTP, a przez długi czas obciążenie procesora przekracza 90%, a konkretny limit obciążenia CPU zależy od konfiguracji ECS. Po zmianie usługi kontroli stanu procesora zużycie procesora przestaje działać.
Jeśli wystąpi również taka sytuacja, zmień konfigurację sprawdzania stanu nasłuchu usług SLB z protokołu HTTP 80 na konfigurację protokołu TCP 80 w następujący sposób:
|