Senario
Sebuah platform e-dagang menggunakan Nginx sebagai middleware gerbang API untuk penghalaan, had kadar, caching, dll. Semasa jualan kilat, pengguna melaporkan respons API perlahan dan tamat masa.
Gejala
- Kependaman API meningkat dari 50ms ke lebih 500ms
- Kadar ralat melonjak dari 0.5% ke 5%
- Penggunaan CPU pekerja Nginx secara konsisten melebihi 80%
- Penggunaan memori tinggi luar biasa
Diagnosis
- Semak log akses:
tail -f /var/log/nginx/access.loguntuk melihat taburan masa respons. - Semak log ralat:
tail -f /var/log/nginx/error.loguntuk masa tamat sambungan, ranap pekerja. - Dayakan modul status: Tambah dalam blok server:
location /nginx_status { stub_status; }Akses/nginx_statusuntuk sambungan aktif, permintaan, dll. - Ujian beban: Gunakan
ab -n 10000 -c 100 http://localhost/nginx_statusuntuk simulasi serentak. - Analisis konfigurasi: Semak
worker_processes,worker_connections,keepalive,proxy_buffersdll.
Arahan Penalaan
# Uji sintaks konfigurasi
nginx -t
# Muat semula secara lancar
nginx -s reload
# Laraskan bilangan proses pekerja (padan dengan teras CPU)
worker_processes auto;
# Atau manual: bilangan teras CPU * 1-2
# Tingkatkan sambungan pekerja
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
# Optimumkan penimbal
proxy_buffers 8 16k;
proxy_buffer_size 16k;
proxy_busy_buffers_size 24k;
# Dayakan keepalive
gzip on;
gzip_min_length 1000;
upstream backend {
keepalive 32;
}
# Had kadar
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
Kawalan Risiko
- Sandarkan konfigurasi sebelum perubahan:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak - Sentiasa sahkan dengan
nginx -tsebelum muat semula - Elakkan perubahan semasa trafik puncak
- Pantau sekurang-kurangnya 10 minit selepas setiap pelarasan
Pemulihan
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
nginx -s reload
Sahkan dengan memeriksa log ralat dan masa respons.
Pengesahan
- Ukur masa respons:
curl -o /dev/null -s -w %{time_total}\n http://api.example.com/status - Perhatikan sambungan aktif pada halaman status Nginx
- Bandingkan keputusan ujian beban sebelum dan selepas
- Pastikan kadar ralat kembali normal
Bila Menghantar Tiket OpsGlobal
- Prestasi masih tidak memuaskan selepas penalaan
- Pekerja sering ranap
- Pelayan hulu sihat tetapi proksi Nginx tidak normal
- Konfigurasi kompleks dengan punca yang tidak jelas
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Performance dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini membincangkan senario sebenar kemerosotan prestasi pada middleware gerbang API berasaskan Nginx, meliputi gejala, diagnosis, arahan penalaan, kawalan risiko, pemulihan, pengesahan, dan bila perlu menghantar tiket kepada OpsGlobal.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.