Senario
Sebuah platform e-dagang menggunakan Nginx sebagai gerbang API. Pengguna melaporkan respons API perlahan; kependaman p99 meningkat daripada 200ms kepada 2s.
Gejala
- Peningkatan ralat 502/504 daripada huluan
- Log ralat Nginx: "upstream timed out"
- Sambungan aktif hampir had worker_connections
Diagnosis
- Periksa log ralat Nginx:
tail -f /var/log/nginx/error.log - Log masa respons huluan: tambah
$upstream_response_timeke format log akses - Pantau kolam sambungan:
curl -s http://localhost/nginx_status | grep Active - Analisis tetapan penimbal: proxy_buffering lalai boleh menyebabkan sekatan baris depan
Arahan
Laraskan worker_connections (dalam /etc/nginx/nginx.conf):
events {
worker_connections 4096;
multi_accept on;
}
Dayakan dan laraskan penimbal (dalam /etc/nginx/conf.d/api_gateway.conf):
location /api/ {
proxy_pass http://upstream;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
# Dayakan keepalive huluan
proxy_http_version 1.1;
proxy_set_header Connection "";
keepalive_requests 1000;
keepalive_timeout 120s;
}
Sahkan sintaks: nginx -t; muat semula: systemctl reload nginx
Kawalan Risiko
- Uji pada contoh canary dahulu
- Pantau CPU, memori, dan bilangan sambungan
- Pastikan perkhidmatan huluan mampu mengendalikan penggunaan semula sambungan yang meningkat
Balik Semula
Simpan sandaran konfigurasi asal sebagai .bak, ganti dan muat semula:
cp /etc/nginx/conf.d/api_gateway.conf.bak /etc/nginx/conf.d/api_gateway.conf
nginx -s reload
Pengesahan
- Pantau pengurangan kependaman p99 melalui Prometheus/Grafana
- Periksa log ralat untuk lebih sedikit tamat masa
- Ujian beban:
ab -n 10000 -c 100 http://gateway/api/test
Bila Hantar Tiket OpsGlobal
Jika kependaman masih berterusan selepas penalaan, atau punca utama adalah perlambatan aplikasi huluan, pertanyaan pangkalan data, atau isu DNS, hantar tiket untuk analisis mendalam pasukan SRE OpsGlobal.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Performance dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Senario sebenar menunjukkan cara mendiagnosis dan menyelesaikan kependaman tinggi dalam gerbang API berasaskan Nginx, dengan arahan, kawalan risiko, dan langkah balik.
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.