Masalah
Setelah mengonfigurasi instance Server Load Balancer (SLB), kesalahan seperti 500 Internal Server Error, 502 Bad Gateway, dan 504 Gateway Timeout dapat terjadi. Kesalahan ini mungkin disebabkan oleh pemblokiran dari penyedia layanan Internet (ISP), pemblokiran oleh Alibaba Cloud Security karena aktivitas klien yang tidak normal, kesalahan konfigurasi instance SLB, kegagalan pemeriksaan kesehatan, atau masalah dalam mengakses aplikasi web pada instance Elastic Compute Service (ECS) backend. Topik ini menjelaskan Solusi untuk kesalahan tersebut. Jika kesalahan tetap ada, gunakan informasi di Prosedur Pemecahan Masalah.
Penyebab
Berikut adalah kemungkinan penyebab kesalahan HTTP 5xx:
- Nama domain server asal tidak memiliki Nomor ICP, atau tidak ada aturan pengalihan Lapisan 7 yang dikonfigurasikan untuk nama domain di Anti-DDoS.
- Alamat IP klien diblokir oleh Keamanan Alibaba Cloud.
- Alamat IP klien diblokir oleh ISP.
- Permintaan diblokir oleh perangkat lunak keamanan instance ECS backend.
- Parameter kernel Linux dari instance ECS backend tidak dikonfigurasikan dengan benar.
- Instance ECS backend memiliki hambatan performa.
- SLB melaporkan kesalahan 502 karena kegagalan pemeriksaan kesehatan.
- Pemeriksaan kesehatan berhasil tetapi kesalahan 502 dilaporkan untuk aplikasi web.
- Logika akses layanan tidak valid.
Solusi
Solusi
Nama domain server asal tidak memiliki nomor ICP, atau tidak ada aturan pengalihan Lapisan 7 yang dikonfigurasikan untuk nama domain di Anti-DDoS.
Jika nama domain server asal tidak memiliki nomor ICP, ajukan permohonan nomor ICP untuk nama domain tersebut. Untuk informasi lebih lanjut, lihat Pendaftaran ICP. Jika Anti-DDoS dikonfigurasikan untuk nama domain, konfigurasikan aturan untuk nama domain tersebut. Untuk informasi lebih lanjut, lihat Aturan.
Alamat IP klien diblokir oleh Keamanan Alibaba Cloud
Tambahkan alamat IP klien ke daftar putih alamat IP. Untuk informasi lebih lanjut, lihat Daftar putih alamat IP.
Alamat IP klien diblokir oleh ISP
Periksa apakah masalah serupa terjadi pada klien dari ISP lain. Jika tidak, masalah disebabkan oleh pemblokiran dari ISP tertentu. Anda dapat memeriksa apakah paket diblokir oleh ISP atau mengirimkan tiket untuk menghubungi dukungan teknis Alibaba Cloud. Jika paket diblokir oleh ISP, hubungi ISP untuk menyelesaikan masalah.
Permintaan diblokir oleh perangkat lunak keamanan instance ECS backend
100.64.0.0/10 adalah blok CIDR pribadi yang dicadangkan oleh Alibaba Cloud untuk server SLB untuk pemeriksaan kesehatan dan pengalihan permintaan. Blok CIDR ini tidak ditugaskan kepada pengguna dan tidak menimbulkan risiko keamanan. Jika Anda menginstal perangkat lunak keamanan atau mengaktifkan firewall pada instance ECS, tambahkan blok CIDR ini ke daftar putih atau uninstall perangkat lunak keamanan untuk mencegah kesalahan 500 dan 502. Bagian ini menggunakan iptables dari instance Linux sebagai contoh.
- Masuk ke server backend tempat masalah terdeteksi dan jalankan perintah berikut untuk melihat semua aturan tabel filter:
iptables -nLJika keluaran berikut ditampilkan, server backend memblokir permintaan dari blok CIDR pribadi SLB.

- Jalankan perintah berikut untuk menghapus aturan ini: Catatan Jika iptables dapat dinonaktifkan, jalankan perintah /etc/init.d/iptables stop untuk menonaktifkan iptables.
sudo iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROP - Jalankan perintah berikut untuk memverifikasi bahwa server backend tidak memblokir permintaan dari blok CIDR pribadi SLB.
sudo iptables -nL
Parameter kernel Linux dari instance ECS backend tidak dikonfigurasi dengan benar
/etc/sysctl.conf, setel nilai parameter berikut menjadi 0 dan jalankan perintah sysctl -p. net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0Instance ECS backend memiliki hambatan performa
Periksa metrik instance ECS backend, seperti utilisasi CPU dan bandwidth Internet. Hambatan performa dapat menyebabkan masalah akses. Jika instance ECS memiliki hambatan performa, pertimbangkan untuk meningkatkan instance ECS.
SLB melaporkan kesalahan 502 karena kegagalan pemeriksaan kesehatan
Jika pemeriksaan kesehatan gagal, lihat Memecahkan Masalah Pengecualian Pemeriksaan Kesehatan. Kesalahan 502 terjadi jika fitur pemeriksaan kesehatan SLB dinonaktifkan dan layanan web di server backend tidak dapat memproses permintaan HTTP. Sebagai contoh, layanan web tidak berjalan.
Pemeriksaan kesehatan berhasil tetapi kesalahan 502 dilaporkan untuk aplikasi web
Kesalahan 502 menunjukkan bahwa SLB dapat meneruskan permintaan dari klien ke server backend, tetapi aplikasi web di server backend tidak dapat memproses permintaan tersebut. Periksa konfigurasi dan status berjalan dari aplikasi web di server backend. Sebagai contoh, waktu yang digunakan oleh aplikasi web untuk memproses permintaan HTTP melebihi periode timeout SLB.
Untuk pendengar Lapisan 7 (HTTP atau HTTPS), periode timeout permintaan koneksi default adalah 60 detik. Jika lebih dari 60 detik diperlukan untuk instance ECS backend memproses permintaan PHP, SLB mengembalikan kode status 504. Untuk pendengar Lapisan 4 (TCP atau UDP), periode timeout permintaan koneksi default adalah 900 detik. Tidak mungkin lebih dari 900 detik diperlukan untuk instance ECS backend memproses permintaan PHP.
Pastikan layanan web dan layanan terkait berjalan sesuai harapan. Periksa apakah permintaan PHP diproses dengan benar, dan optimalkan pemrosesan permintaan PHP oleh server backend. NGINX dan PHP-FPM digunakan dalam contoh berikut.
- Jumlah permintaan PHP yang diproses telah mencapai batas atas. Jumlah total permintaan PHP di server telah mencapai batas atas yang ditentukan oleh parameter max_children di PHP-FPM. Jika permintaan PHP baru mencapai server, SLB mengembalikan kode status 502 atau 504.
- Jika permintaan PHP yang ada dan baru diproses secara tepat waktu, tidak ada kesalahan yang terjadi.
- Jika permintaan PHP yang ada diproses dengan lambat dan permintaan PHP baru tetap dalam keadaan menunggu hingga nilai fastcgi_read_timeout di NGINX terlampaui, kode status 504 dikembalikan.
- Jika permintaan PHP yang ada diproses dengan lambat dan permintaan PHP baru tetap dalam keadaan menunggu hingga nilai request_terminate_timeout di NGINX terlampaui, kode status 502 dikembalikan.
- Jika waktu eksekusi skrip PHP melebihi batas atas, atau waktu yang digunakan oleh PHP-FPM untuk memproses skrip PHP melebihi nilai request_terminate_timeout di NGINX, kesalahan 502 terjadi dan entri kesalahan berikut ditampilkan di log NGINX:
[error] 1760#0: *251777 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: XXX.XXX.XXX.XXX, server: localhost, request: "GET /timeoutmore.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000" - Pemeriksaan kesehatan dilakukan pada halaman statis. Jika pemeriksaan kesehatan berhasil, tetapi pengecualian terjadi dalam pemrosesan permintaan dinamis, kesalahan dilaporkan. Sebagai contoh, permintaan dinamis tidak dapat diproses karena PHP-FPM tidak berjalan.
Logika akses layanan tidak valid
Pastikan bahwa instance ECS backend dari pendengar Lapisan 4 SLB tidak menggunakan alamat IP instance SLB untuk mengakses instance SLB. Jika instance ECS backend mengakses portnya sendiri melalui alamat IP publik instance SLB tempat instance ECS ditambahkan sebagai server backend, permintaan dikirim ke instance ECS backend berdasarkan kebijakan penjadwalan yang dikonfigurasikan untuk instance SLB. Ini mengarah pada loop tak terbatas, yang menghasilkan kesalahan 500 atau 502.
Prosedur pemecahan masalah
- Periksa apakah masalah akses terjadi pada semua klien. Jika tidak, periksa apakah klien yang melaporkan kesalahan diblokir oleh Keamanan Alibaba Cloud. Selain itu, periksa apakah nama domain atau alamat IP SLB diblokir oleh ISP.
- Periksa halaman tempat kesalahan 500, 502, atau 504 dilaporkan untuk menentukan apakah kesalahan dilaporkan karena masalah pada SLB, Anti-DDoS, atau instance ECS backend.
- Masalah Anti-DDoS: Jika Anti-DDoS dikonfigurasikan, pastikan aturan pengalihan Lapisan 7 dikonfigurasikan dengan benar.
- Masalah SLB:
- Periksa apakah instance SLB gagal dalam pemeriksaan kesehatan. Jika ya, lihat Kegagalan pemeriksaan kesehatan.
- Gunakan pendengar Lapisan 4 alih-alih pendengar Lapisan 7 untuk memeriksa apakah masalah tetap ada.
- Masalah konfigurasi instance ECS: Jika kode status 5XX terjadi secara berkala, kemungkinan besar instance ECS backend memiliki masalah konfigurasi. Di file hosts klien, selesaikan nama domain ke alamat IP instance ECS backend, dan periksa apakah instance ECS backend memiliki masalah.
- Jika kesalahan disebabkan oleh instance ECS backend, periksa log aplikasi web dari instance ECS backend. Periksa apakah layanan web berjalan sesuai harapan dan apakah logika akses web valid. Uninstall perangkat lunak antivirus di instance ECS dan mulai ulang instance sebelum Anda memecahkan masalah kesalahan.
- Periksa apakah CPU, memori, disk, atau bandwidth dari instance ECS backend memiliki hambatan performa.
- Jika instance ECS menjalankan Linux, periksa apakah parameter kernel TCP dari instance ECS backend dikonfigurasikan dengan benar.
Ruang lingkup yang berlaku
SLB