Senario
Sebuah platform e-dagang menggunakan Nginx sebagai gerbang API untuk penghalaan dan had kadar. Semasa jualan kilat, lonjakan trafik menyebabkan kependaman tinggi dan tamat masa permintaan.
Gejala
- Masa tindak balas API melonjak dari ~50ms ke >500ms;
- Ralat 504 melebihi 5% daripada jumlah permintaan;
- Log ralat Nginx menunjukkan mesej
upstream timed outberulang.
Diagnosis
- Periksa proses pekerja:
ps aux | grep nginx– pastikan pekerja == teras CPU. - Statistik sambungan: Dayakan stub_status dan query
curl http://localhost/nginx_statusuntuk sambungan aktif, baris gilir menunggu. - Masa tindak balas hulu: Parse log akses untuk masa tindak balas hulu:
tail -f /var/log/nginx/access.log | awk '{print $NF}'. - Sumber sistem:
top -bn1 | head -20untuk CPU/memori;vmstat 1 10untuk pertukaran konteks.
Arahan Penalaan
Ubah suai /etc/nginx/nginx.conf:
events {
worker_connections 4096; # Tingkatkan berdasarkan ulimit -n
use epoll; # Model acara berprestasi tinggi di Linux
multi_accept on; # Terima semua sambungan baharu sekali gus
}
http {
keepalive_timeout 65;
keepalive_requests 1000; # Maksimum permintaan setiap sambungan keepalive
proxy_http_version 1.1;
proxy_set_header Connection "";
upstream backend {
keepalive 32; # Kumpulan sambungan ke hulu
server 10.0.0.1:8080;
}
server {
location /api/ {
proxy_pass http://backend;
proxy_buffer_size 8k; # Tambah buffer untuk kurangkan I/O cakera
proxy_buffers 8 8k;
proxy_busy_buffers_size 16k;
}
}
}
Uji: nginx -t; muat semula: nginx -s reload.
Kawalan Risiko
- Lakukan perubahan semasa trafik rendah;
- Sandaran konfigurasi:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak; - Laraskan parameter secara berperingkat, pantau papan pemuka;
- Sediakan skrip rollback.
Rollback
Jika masalah timbul selepas muat semula:
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
nginx -t && nginx -s reload
Pengesahan
- Ujian beban:
ab -n 10000 -c 200 https://your-api.example.com/api/– ukur kependaman dan kadar ralat. - Pemantauan masa nyata: dump konfigurasi dengan
nginx -Tdan tail log akses untuk memerhati masa hulu. - Bandingkan sebelum/selepas: kependaman, throughput, peratus ralat.
Bila Menghantar Tiket OpsGlobal
- Sasaran prestasi masih tidak tercapai selepas penalaan;
- Perlu pelarasan parameter kernel (cth. net.core.somaxconn) atau pengoptimuman peringkat OS;
- Disyaki pepijat Nginx atau memerlukan modul tersuai;
- Kekurangan tetingkap perubahan pengeluaran atau memerlukan SLA khusus.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Performance dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal mendalam untuk menala Nginx sebagai gerbang API bagi prestasi, merangkumi pengenalpastian senario, analisis gejala, diagnosis, arahan konfigurasi, kawalan risiko, rollback, 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.