По време на празника на Първи май, сервизният екип обнови сървърната среда на уебсайта Yitaobang от PHP5.3 на PHP5.6, а след успешния ъпгрейд процесорът на сървъра беше увеличен до над 90%, което остава високо. Проверете сървъра и установихте, че множество PHP-FPM процеси карат натоварването на процесора да е твърде голямо, което води до сайта недостъпен нормално. Многократното преинсталиране на сървърната среда и PHP версията, както и смяната на PHP на HHVM, не може да реши проблема с високото натоварване на процесора.
Оперативен процес на сървър E-Taobang (диаграма на архитектурата на услугата): Потребителски клиент → разрешаване на домейн имена → Baidu Cloud Acceleration Node (CDN/кеширане/анти-DDOS/CC атаки) → Alibaba Cloud Shield възел (анти-CC/DDOS/WAF атаки) → ECS изходен сървър (CSS, JS и изображения за CDN отклоняване), а Alibaba Cloud Cloud Shield няма никаква информация за атака, така че може напълно да се изключи като атака.
Като гледам логовете на nginx, php-fpm логовете и бавните логове, няма аномални фактори, а виждам множество TIME_WAIT информация от командата netstat -n, която се дължи на IP сегмента на 100.97.x.x (последният IP сегмент е IP адресът на услугата за слушане на Alibaba Cloud SLB).
Без повече забавяне, нека поговорим за конкретното решение, което в крайна сметка беше обработено от професионалния екип по поддръжка и поддръжка на Yitao Gang (V Station Power), а крайният резултат беше, че натоварването на процесора, причинено от настройките за мониторинг на услугата на SLB, беше твърде голямо. Оригиналната SLB услуга слуша порт 80 на HTTP протокола, а проверката за здравето на http протокола редовно изпраща http заявки от няколко глави, което води до непрекъснат достъп до четене на HTTP, което води до php-fpm до натоварване на процесора над 90% за дълго време, а конкретната квота за натоварване зависи от конфигурацията на ECS. След смяна на услугата за проверка на здравето, използването на процесора се изключва.
Ако се случи и тази ситуация, променете конфигурацията за проверка на здравето на SLB услугата от HTTP протокол 80 към TCP протокол 80 по следния начин:
|