Saat ini saya menerima banjir HTTP yang cukup besar sekarang, dan itu menyebabkan proxy nginx saya terbalik menghasilkan 502 Bad Gateway.
Saya memiliki server frontend yang menjalankan nginx sebagai proxy ke server backend saya, tetapi itu hanya mendapatkan banyak connect() failed (110: Connection timed out) while connecting to upstream
kesalahan. Banyak dari mereka. Jika saya mem-bypass server proxy untuk terhubung ke backend, saya dapat menjalankan situs dengan baik, jadi saya tahu itu ada di proxy sebaliknya. Namun, saya tidak tahu bagaimana menentukan mengapa waktunya habis.
Ada bantuan?
menjalankan nginx 1.2.3 pada CentOS 6.2
nginx
reverse-proxy
rampok
sumber
sumber
Jawaban:
Saya berasumsi bahwa Anda telah mendongkrak tingkat pencatatan kesalahan Nginx hingga debug. Jika tidak, mulailah dari sana.
Taruhan terbaik Anda mungkin akan digunakan
strace
untuk melihat panggilan sistem yang dibuat oleh Nginx. Khususnya, Anda ingin memperhatikanconnect()
panggilan, dan mengawasi kode pengembalian ini (man 2 connect
bisa menjadi teman Anda di sini).Setelah Anda memiliki informasi itu, Anda dapat membuat tebakan yang lebih baik tentang apakah masalahnya terbatas pada proxy frontend Anda, atau ada hubungannya dengan interaksi antara proxy dan server aplikasi backend.
sumber
Tidak ada yang lebih hebat dari ini kecuali Anda ingin memasukkan probe dtrace:
Setel level log debug: /etc/nginx/nginx.conf:
Atur tcpdump di jendela lain:
Monitor file log di jendela lain:
Startup nginx secara interaktif dengan strace:
Lalu
Selanjutnya dapat dilakukan debugging dengan nginx yang dikompilasi
--with-debug
. Periksa dengan menjalankan:Modul bagus lainnya yang tidak dikompilasi secara default adalah: HttpStubStatusModule . Dalam semua kemungkinan, setiap pengaturan yang layak akan membutuhkan nginx yang dikompilasi khusus (sangat direkomendasikan kemasan menggunakan alat pengemasan distro).
Sebagian besar tidak cocok untuk penggunaan produksi, lihat kompilasi nginx dengan gperf jika Anda membutuhkan lebih banyak statistik.
sumber
Sepertinya Anda sedang men-debug situs lalu lintas tinggi.
Gunakan
debug
dengandebug_connection
direktif sehingga log kesalahan nginx akan menampilkan log debug hanya dari IP Anda.Setelah Anda mulai melihat beberapa log kesalahan yang berguna daripada mengaktifkan opsi debug untuk seluruh konfigurasi nginx, tambahkan
error_log /path/to/some/file/ debug;
direktif terpisah dilocation {..}
blok yang bertanggung jawab untuk koneksi reverse_proxy.Dengan cara ini Anda akan dapat mengisolasi log kesalahan debug dari IP Anda saja.
Cobalah mengaitkannya dengan permintaan yang Anda buat (dari browser Anda).
Misalnya, periksa: https://easyengine.io/tutorials/nginx/debugging/
Level selanjutnya, Anda dapat menggunakan Nginx's HttpEchoModule
sumber
Saya tidak pernah menemukan Nginx menjadi hambatan, dalam banyak kasus ini lebih dari mampu daripada ujung belakang. Tetapi jika Anda menguji tanpa Nginx dan tidak menemukan kesalahan, maka itu akan menjadi (atau keduanya):
Tanpa melihat konfigurasi Nginx Anda, tidak ada yang dapat mengomentari yang sebelumnya. Dan tanpa output yang sesuai dari OS, tidak ada yang dapat mengomentari yang terakhir.
sumber