Senario
Bayangkan Nginx berfungsi sebagai gerbang API dalam kluster Kubernetes. Semasa waktu puncak, pengguna melaporkan muatan halaman perlahan dan ralat 502 Bad Gateway sekali-sekala. Pasukan operasi ditugaskan untuk menyelesaikannya.
Gejala
- Latensi P99 melonjak dari 20ms ke 500ms
- Log ralat Nginx menunjukkan 'upstream timed out' dan 'no live upstreams'
- CPU worker process mencapai 90%
- Pemeriksaan kesihatan upstream lulus, tetapi kolam sambungan Nginx habis
Diagnosis
- Periksa status sambungan Nginx:
curl -s http://localhost/nginx_status | grep -E 'Active|Waiting' - Lihat statistik upstream:
curl -s http://localhost/upstream_status(memerlukan ngx_http_upstream_module) - Periksa parameter kernel:
sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog - Semak tetapan proxy_pass dan buffer dalam konfigurasi:
nginx -T | grep -E 'proxy_buffer|proxy_busy|worker_connections' - Ujian tekanan dengan h2load:
h2load -c 100 -n 10000 -H 'Host: example.com' http://localhost/
Arahan & Tindakan
Laraskan proses pekerja dan sambungan
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 10240;
multi_accept on;
use epoll;
}
Muat semula: nginx -s reload
Optimumkan buffer proksi
proxy_buffer_size 4k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
proxy_temp_file_write_size 64k;
Tingkatkan had masa upstream
proxy_connect_timeout 10s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
Laraskan parameter kernel
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=65535
sysctl -w net.ipv4.tcp_tw_reuse=1
Kawalan Risiko
- Uji perubahan konfigurasi dalam persekitaran bukan pengeluaran terlebih dahulu
- Sahkan sintaks dengan
nginx -t - Lakukan muat semula tanpa gangguan (
nginx -s reload) - Untuk perubahan kernel, buat sandaran nilai asal dan kekalkan melalui /etc/sysctl.conf
Pengembalian
- Pulihkan konfigurasi Nginx:
cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf && nginx -s reload - Kembalikan parameter kernel:
sysctl -p /etc/sysctl.conf.bak - Pantau pemulihan kadar ralat
Pengesahan
- Periksa metrik latensi: P99 sepatutnya turun di bawah 50ms
- Log ralat: tiada entri 502/504
- Ujian tekanan: h2load harus menunjukkan kejayaan 100%
- Pantau selama 24 jam untuk mengesahkan kestabilan
Bila Serahkan Tiket OpsGlobal
- Langkah di atas tidak menyelesaikan isu
- Analisis paket mendalam (Wireshark) diperlukan
- Perkhidmatan upstream mempunyai bottleneck prestasi yang memerlukan usaha bersama
- Pengoptimuman jangka panjang atau perubahan seni bina diperlukan
Pakar SRE OpsGlobal boleh memberikan diagnosis dan penalaan jarak jauh untuk memastikan gerbang API anda berprestasi optimum.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Performance dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan mendalam untuk mendiagnosis dan membaiki latensi tinggi dan ralat 502 pada Nginx sebagai gerbang API, termasuk arahan boleh laku, konfigurasi, langkah pengembalian, dan bila perlu eskalasi.
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.