Selama liburan May Day, tim layanan meningkatkan lingkungan server situs web Yitaobang, dari PHP5.3 menjadi PHP5.6, dan setelah peningkatan berhasil, CPU server meledak hingga lebih dari 90%, yang tetap tinggi. Periksa server dan temukan bahwa beberapa proses PHP-FPM menyebabkan beban CPU terlalu tinggi, mengakibatkan situs web tidak dapat diakses secara normal. Menginstal ulang lingkungan server dan versi PHP beberapa kali, dan bahkan mengubah PHP ke HHVM tidak dapat menyelesaikan masalah beban CPU yang tinggi.
Proses operasi server E-Taobang (diagram arsitektur layanan): Klien pengguna → Resolusi nama domain → Baidu Cloud Acceleration Node (serangan CDN/caching/anti-DDOS/CC) → node Alibaba Cloud Shield (serangan anti-CC/DDOS/WAF) → server sumber ECS (CSS, JS, dan gambar untuk pengalihan CDN), dan Alibaba Cloud Cloud Shield tidak memiliki informasi serangan apa pun, sehingga dapat sepenuhnya dikesampingkan sebagai serangan.
Melihat log nginx, log php-fpm, dan log lambat, tidak ada faktor abnormal, dan saya melihat beberapa informasi TIME_WAIT dari perintah netstat -n, yang disebabkan oleh segmen IP 100.97.x.x (segmen IP terakhir adalah alamat IP layanan mendengarkan Alibaba Cloud SLB).
Tanpa basa-basi lagi, mari kita bicara tentang solusi spesifik, yang akhirnya ditangani oleh tim operasi dan pemeliharaan profesional Yitao Gang (V Station Power), dan hasil akhirnya adalah beban CPU yang disebabkan oleh pengaturan pemantauan layanan SLB terlalu tinggi. Layanan SLB asli mendengarkan port protokol HTTP 80, dan pemeriksaan kesehatan protokol http akan secara teratur mengirim permintaan http dari beberapa kepala, menghasilkan akses terus menerus untuk membaca HTTP, menghasilkan php-fpm yang menyebabkan beban CPU mencapai lebih dari 90% untuk waktu yang lama, dan kuota penggunaan beban CPU tertentu bergantung pada konfigurasi ECS. Setelah mengubah layanan pemeriksaan kesehatan, penggunaan CPU offline.
Jika situasi ini juga terjadi, ubah konfigurasi pemeriksaan kesehatan layanan SLB yang mendengarkan dari protokol HTTP 80 ke konfigurasi protokol TCP 80 sebagai berikut:
|