Senario
Sebuah platform e-dagang menggunakan Nginx sebagai gerbang API mengalami kelewatan respons dan kegagalan sambungan ketika lonjakan trafik.
Gejala
- Pelanggan menerima ralat 502/504.
- CPU backend normal, tetapi proses pekerja Nginx melonjak.
- Bilangan sambungan mencapai had sistem.
Diagnosis
- Periksa log ralat Nginx:
tail -f /var/log/nginx/error.log - Kira sambungan aktif:
netstat -anp | grep nginx | wc -l - Lihat worker_connections:
grep worker_connections /etc/nginx/nginx.conf - Dayakan modul status:
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
Akses http://localhost/nginx_status untuk metrik masa nyata.
Perintah Penalaan
- Laraskan bilangan pekerja dan sambungan:
worker_processes auto;
events {
worker_connections 65536;
use epoll;
}
- Dayakan multipleks HTTP/2:
listen 443 ssl http2;
- Konfigurasi kumpulan sambungan upstream dengan keepalive:
upstream backend {
server 10.0.0.1:8080 max_fails=3 fail_timeout=30s;
keepalive 256;
}
- Had kadar untuk melindungi backend:
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=1000r/s;
limit_req zone=api_limit burst=200 nodelay;
- Dayakan cache kamus kongsi:
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location /api/ {
proxy_cache my_cache;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 10m;
add_header X-Cache-Status $upstream_cache_status;
proxy_pass http://backend;
}
}
Kawalan Risiko
- Laksanakan perubahan secara berperingkat, bukan sekali gus.
- Gunakan
nginx -s reloaduntuk elak gangguan perkhidmatan. - Tetapkan had kadar dengan konservatif, ketat selepas pemerhatian.
Pindah Balik
- Simpan sandaran konfigurasi asal:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak - Pulihkan:
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf && nginx -s reload
Pengesahan
- Ujian beban:
ab -n 10000 -c 200 http://yourdomain.com/api/test - Pantau sambungan:
watch -n 1 'curl -s http://localhost/nginx_status | grep Active' - Periksa hit cache melalui header
X-Cache-Status.
Bila Serahkan Tiket OpsGlobal
- Isu berterusan setelah penalaan dan menjejaskan pengeluaran.
- Perlukan pelarasan kernel lanjutan atau pengimbangan beban kustom.
- Disyaki kesesakan infrastruktur asas (rangkaian, cakera I/O).
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Performance dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Penyelaman mendalam tentang diagnosis dan pengoptimuman Nginx sebagai gerbang API, termasuk pengumpulan sambungan, had kadar, cache, dan pemantauan.
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.