Tempah Konsultasi Hantar Tiket

Menguasai Prestasi Nginx dan Gerbang API: Panduan Praktikal untuk SRE

Atasi kependaman dan kesesakan sumber dalam gerbang API anda dengan teknik penalaan yang terbukti. Daripada pengoptimuman pekerja Nginx kepada caching middleware, panduan ini merangkumi diagnosis, arahan, kawalan risiko, dan prosedur rollback untuk operasi pengeluaran.

Menguasai Prestasi Nginx dan Gerbang API: Panduan Praktikal untuk SRE
Performance 6min 72 paparan 2026-06-27
NginxGerbang APIPengoptimuman PrestasiSREKongCaching

Senario

Anda bertanggungjawab untuk Nginx atau gerbang API pengeluaran (cth., Kong, NGINX Plus, atau OpenResty tersuai) dan melihat peningkatan kependaman respons API, penggunaan CPU yang tinggi, dan kadang-kadang tamat masa. Ini sering disebabkan oleh konfigurasi pekerja yang salah, caching yang hilang, atau pemprosesan middleware yang tidak efisien.

Gejala

  • Purata masa respons meningkat 2x atau lebih
  • Kerap 504 tamat masa dari hulu
  • Ralat "upstream timed out" dalam log
  • Proses pekerja Nginx hampir 100% CPU
  • Pelanggan melaporkan sambungan ditetapkan semula atau muat perlahan

Diagnosis

Mula-mula, kumpul metrik asas:

# Semak sambungan aktif
$ curl http://localhost/nginx_status | grep -E 'Active|Waiting'
# Ukur masa respons hulu
$ curl -w "@curl-format.txt" -o /dev/null -s https://api.example.com/endpoint
# Analisis beban sistem
$ htop -p $(pgrep -f 'nginx: worker' | tr '\n' ',')
# Tangkapan paket
$ tcpdump -i eth0 port 80 -w capture.pcap

Periksa parameter konfigurasi utama Nginx: worker_processes, worker_connections, proxy_pass, proxy_cache, proxy_buffers. Gunakan nginx -T untuk melihat konfigurasi penuh.

Arahan

Gunakan pengoptimuman berikut dalam persekitaran pementasan terlebih dahulu.

1. Optimumkan Proses Pekerja

worker_processes auto;          # Padankan bilangan teras CPU
worker_rlimit_nofile 65536;    # Tingkatkan had deskriptor fail

2. Dayakan Caching Proksi

proxy_cache_path /var/cache/nginx 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_valid 200 302 60m;
        proxy_cache_use_stale error timeout updating http_500;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

3. Laraskan Penimbal dan Tamat Masa

proxy_buffer_size 8k;
proxy_buffers 8 8k;
proxy_busy_buffers_size 16k;
proxy_connect_timeout 10s;
proxy_send_timeout 10s;
proxy_read_timeout 30s;

4. Kekalkan Sambungan Hulu

upstream backend {
    keepalive 32;
    keepalive_requests 100;
}
server {
    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_pass http://backend;
    }
}

5. Dayakan Mampatan Gzip

gzip on;
gzip_types application/json text/plain text/css;
gzip_min_length 1000;

6. Penalaan Khusus Middleware (cth., Kong)

  • Had kadar: gunakan strategi redis untuk mengelakkan pertikaian memori dikongsi
  • Pengesahan: prakira dan cache kunci awam JWT untuk mengurangkan panggilan hulu
  • Rantai plugin: lumpuhkan plugin yang tidak perlu untuk mengelakkan overhead setiap permintaan

Kawalan Risiko

  • Sandarkan konfigurasi semasa: cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  • Sahkan sintaks: nginx -t
  • Pelancaran beransur-ansur: muat semula pada satu nod dahulu, perhatikan 5 minit
  • Tetapkan penggera pemantauan: masa respons, kadar ralat, penggunaan CPU
  • Gunakan alat pengurusan konfigurasi (cth., Ansible) untuk konsistensi

Rollback

Jika masalah timbul, segera:

# Pulihkan sandaran
$ cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
# Muat semula secara lembut
$ systemctl reload nginx
# Sahkan sambungan dan log ralat
$ tail -f /var/log/nginx/error.log

Jika parameter sistem diubah (cth., sysctl), kembalikan dengan sysctl -p.

Pengesahan

Gunakan alat ini untuk pengesahan prestasi:

# Ujian beban dengan wrk
$ wrk -t12 -c400 -d30s https://api.example.com/endpoint
# Bandingkan persentil kependaman (p50, p95, p99) sebelum/selepas
# Ujian mudah dengan ab
$ ab -n 10000 -c 100 https://api.example.com/endpoint
# Semak nisbah cache hit
$ curl -I https://api.example.com/endpoint | grep X-Cache-Status

Hasil ideal: masa respons berkurang 50%+, penggunaan CPU lebih rendah, tiada tamat masa.

Bila Untuk Membuka Tiket OpsGlobal

Bawa isu kepada sokongan OpsGlobal apabila: - Prestasi tidak bertambah baik selepas penalaan di atas - Analisis rangkaian peringkat kernel atau parameter TCP mendalam diperlukan - Gerbang pihak ketiga (cth., Kong) menunjukkan ralat dalaman atau pepijat plugin - Modul Nginx tersuai (cth., lua-resty) atau pengoptimuman kompilasi diperlukan - Persekitaran melebihi kapasiti nod tunggal; nasihat seni bina pengimbangan beban diperlukan

Pasukan SRE OpsGlobal membawa pengalaman penalaan pengeluaran yang luas dan boleh membantu secara jauh dengan diagnosis dan pelaksanaan perubahan yang selamat.

Senario Penggunaan

Sesuai untuk pasukan yang menyelesaikan isu Performance dan memerlukan aliran kerja yang jelas.

Latar Belakang Masalah

Atasi kependaman dan kesesakan sumber dalam gerbang API anda dengan teknik penalaan yang terbukti. Daripada pengoptimuman pekerja Nginx kepada caching middleware, panduan ini merangkumi diagnosis, arahan, kawalan risiko, dan prosedur rollback untuk operasi pengeluaran.

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.

Tiket Hubungi WhatsApp Konsultasi