Aktifkan log akses ALB untuk mengidentifikasi error HTTP dari Application Load Balancer (ALB) secara cepat. Periksa apakah kode status ALB (pada field status) dan kode status upstream (pada field upstream_status) dalam log akses sama. Jika nilainya sesuai, kode status tersebut diteruskan dari Layanan Backend. Utamakan troubleshooting pada Layanan Backend.
HTTP 400: Bad request
Menunjukkan permintaan yang tidak valid.
Server Backend langsung mengembalikan kode status 400: Periksa log akses. Jika nilai field
upstream_statusadalah400, berarti ALB meneruskan kode status tersebut dari Server Backend. Lakukan troubleshooting pada Layanan Backend.Permintaan HTTP dikirim ke Listener HTTPS: Listener HTTPS pada instans ALB menolak permintaan non-HTTPS dan mengembalikan kode status
400. Pastikan client tidak mengirim permintaan HTTP ke port HTTPS.Ukuran Header Permintaan melebihi batas: ALB mensyaratkan setiap Header Permintaan HTTP tidak boleh lebih besar dari 32 KB. Jika batas ini dilampaui, ALB akan mengembalikan kode status
400. Kurangi ukuran Header Permintaan.Permintaan tidak terkirim sepenuhnya: Client menutup koneksi sebelum permintaan HTTP terkirim seluruhnya. Lakukan pengambilan paket di sisi client untuk menentukan penyebab terminasi dini.
Header Permintaan tidak valid: Misalnya, nilai header
Content-Lengthtidak sesuai dengan ukuran aktual Body Permintaan. Lakukan pengambilan paket di sisi client untuk menganalisis format permintaan HTTP dan bandingkan dengan permintaan yang valid.
HTTP 405: Method not allowed
Menunjukkan metode permintaan yang tidak didukung.
Batasan ALB: ALB tidak mendukung metode permintaan
TRACE. Gunakan metode lain.Batasan Layanan Backend: Selain
TRACE, dukungan terhadap metode permintaan lain bergantung pada Server Backend. Untuk memverifikasi, jalankan perintah berikut guna menguji koneksi langsung ke Server Backend:curl -X METHOD http://<Backend-Server-IP>:<Port>, denganMETHODsebagai metode permintaan yang digunakan oleh client.
HTTP 408: Request timeout
Terjadi ketika permintaan mengalami timeout, sehingga ALB menutup koneksi.
Pengiriman data lambat dari client: Dalam periode timeout permintaan client ke ALB (default 60 detik), client hanya mengirim sebagian data, misalnya mengirim
Request Headertetapi tidak mengirimRequest Body. Lakukan pengambilan paket di sisi client untuk memeriksa adanya bottleneck performa atau error lainnya.Kualitas jaringan buruk antara client dan ALB: Round-Trip Time (RTT) TCP tinggi atau terjadi kehilangan paket di jaringan. Periksa field
request_timedantcpinfo_rttdalam log akses, atau lakukan diagnostik jaringan di sisi client.Pembatasan bandwidth pada instans ALB: Trafik ke instans ALB melebihi batas bandwidth, sehingga memicu throttling dan kehilangan paket. Gunakan CloudMonitor untuk memeriksa metrik
outbound bandwidthdanDropped Connections.
HTTP 414: URI too long
Menunjukkan URI permintaan terlalu panjang dan ditolak oleh ALB atau Server Backend.
Batasan ALB: ALB mensyaratkan URI permintaan tidak boleh lebih panjang dari 32 KB. Jika batas ini dilampaui, ALB akan mengembalikan kode status
414. Perpendek URI tersebut. Untuk mentransfer data dalam jumlah besar, gunakan metodePOSTdan letakkan data tersebut di dalam Request Body. ALB mendukung Request BodyPOSThingga 50 GB.Batasan Layanan Backend: URI tidak melebihi batas ALB tetapi melebihi batas yang lebih ketat yang ditetapkan pada Layanan Backend. Dalam skenario ini, ALB meneruskan kode status
414yang dikembalikan oleh Server Backend. Lakukan troubleshooting pada Layanan Backend.
HTTP 463: Request loop detected
Kode status khusus ini menunjukkan terdeteksinya loop pengalihan dalam jalur permintaan. Saat mengalihkan permintaan, ALB menambahkan field ALICLOUD-ALB-TRACE ke dalam Request Header. Nilai field ini merupakan hash 16 karakter yang dihasilkan dari ID aturan pengalihan. ALB mendeteksi loop jika ditemukan ID aturan duplikat atau jumlah field ALICLOUD-ALB-TRACE melebihi 16. Ketika loop terdeteksi, ALB menghentikan pengalihan permintaan untuk mencegah kehabisan sumber daya akibat badai jaringan dan mengembalikan kode status 463.
Kesalahan konfigurasi Layanan Backend: Konfigurasi Layanan Backend yang salah mengarahkan permintaan kembali ke instans ALB yang sama, sehingga menciptakan loop. Tinjau dan perbaiki konfigurasi Layanan Backend untuk instans ALB tersebut.
Cacat dalam desain arsitektur jaringan: Misalnya, satu jalur permintaan melibatkan beberapa instans load balancer. Optimalkan arsitektur jaringan.
HTTP 499: Client closed request
Kode status non-standar ini menunjukkan bahwa client menutup koneksi sebelum server sempat memberikan respons.
Kualitas jaringan buruk antara client dan ALB: Round-Trip Time (RTT) TCP tinggi atau terjadi kehilangan paket di jaringan. Periksa field
request_timedantcpinfo_rttdalam log akses, atau lakukan diagnostik jaringan di sisi client.Pembatasan bandwidth pada instans ALB: Trafik ke instans ALB melebihi batas bandwidth, sehingga memicu throttling dan kehilangan paket. Gunakan CloudMonitor untuk memeriksa metrik
outbound bandwidthdanDropped Connections.Layanan Backend membutuhkan waktu terlalu lama untuk memproses permintaan: Waktu pemrosesan Layanan Backend melebihi pengaturan timeout client. Periksa field
upstream_response_timedalam log akses, yang mencatat waktu pemrosesan permintaan oleh Layanan Backend. Jika nilai ini secara konsisten tinggi, selidiki Layanan Backend untuk menemukan bottleneck performa.Timeout permintaan client diatur terlalu rendah: Client menutup koneksi karena timeout sebelum permintaan selesai. Periksa field
request_timedalam log akses, yang merepresentasikan durasi total permintaan client. Gunakan nilai ini sebagai referensi untuk mengatur timeout yang lebih sesuai di sisi client.Client mengalami masalah tak terduga: Client menutup koneksi lebih awal sebelum permintaan selesai. Selidiki perilaku client untuk menentukan apakah penutupan koneksi dilakukan secara sengaja.
HTTP 500: Internal server error
Menunjukkan bahwa Server Backend mengalami error internal dan tidak dapat memenuhi permintaan.
Server Backend langsung mengembalikan kode status 500: Periksa log akses. Jika field
upstream_statusbernilai500, berarti ALB meneruskan kode status tersebut dari Server Backend. Lakukan troubleshooting pada Layanan Backend.Server Backend menutup koneksi secara tak terduga: Server Backend menutup koneksi secara tak terduga sebelum mengirimkan respons lengkap. Lakukan pengambilan paket di Server Backend untuk menyelidiki penyebab penutupan koneksi yang tidak terduga tersebut.
HTTP 502: Bad gateway
Error ini terjadi ketika Listener HTTP atau HTTPS menerima permintaan, tetapi ALB tidak dapat meneruskannya ke Server Backend atau gagal menerima respons darinya.
Server Backend langsung mengembalikan kode status 502: Periksa log akses. Jika field
upstream_statusbernilai502, berarti ALB meneruskan kode status tersebut dari Server Backend. Lakukan troubleshooting pada Layanan Backend.Server Backend mengembalikan kode error berbeda: Misalnya, Server Backend mengembalikan kode status
504atau444, tetapi ALB mengembalikan kode status502ke client. Bandingkan fieldstatusdanupstream_statusdalam log akses. Lakukan troubleshooting berdasarkan kode status aktual yang dikembalikan oleh Server Backend.Terjadi error komunikasi TCP antara ALB dan Server Backend: Pastikan Layanan Backend sedang berjalan, port layanan dalam keadaan listening dengan benar, dan handshake TCP berhasil. Anda dapat menggunakan pengambilan paket untuk menganalisis handshake TCP.
Antrian backlog Server Backend penuh, sehingga permintaan koneksi baru ditolak atau dibuang. Di Server Backend, jalankan perintah
netstat -s | grep -i listenuntuk memeriksa apakah jumlahdropterus meningkat.Ukuran paket permintaan melebihi MTU Server Backend: Hal ini dapat terlihat dari keberhasilan pengiriman paket kecil (seperti pemeriksaan kesehatan) tetapi kegagalan pada paket data yang lebih besar. Lakukan pengambilan paket di Server Backend untuk menganalisis apakah panjang paket berada dalam batas yang ditentukan.
Respons Server Backend tidak valid atau berisi header HTTP yang tidak sesuai: Lakukan pengambilan paket di Server Backend untuk menganalisis apakah format paket respons valid.
Server Backend tidak memproses permintaan tepat waktu: Periksa log di Server Backend dan pantau penggunaan CPU serta memori-nya.
HTTP 503: Service temporarily unavailable
Error ini menunjukkan bahwa server sementara tidak tersedia, sering kali karena trafik melebihi batas atau Layanan Backend tidak tersedia.
Server Backend langsung mengembalikan kode status 503: Periksa log akses. Jika field
upstream_statusbernilai503, berarti ALB meneruskan kode status tersebut dari Server Backend. Lakukan troubleshooting pada Layanan Backend.Laju permintaan client memicu throttling ALB:
Periksa metrik
Requests per seconddi CloudMonitor.CloudMonitormenampilkan data dengan granularitas per menit, sehingga mungkin tidak menunjukkan pembatasan laju pada tingkat detik. Periksa log akses. Jika nilai fieldupstream_statusadalah-, berarti permintaan tidak dikirim ke Server Backend.Periksa header paket respons. Jika berisi field
ALB-QPS-Limited:Limited, berarti permintaan tersebut memicu throttling pada instans ALB.
Client mengakses IP ALB secara langsung atau resolusi DNS gagal: Hal ini dapat menyebabkan trafik terkonsentrasi pada beberapa alamat IP, sehingga melebihi batasnya. Client harus mengakses instans ALB melalui nama domain-nya. Untuk informasi lebih lanjut, lihat Konfigurasikan rekaman CNAME untuk instans ALB. Pastikan resolusi CNAME berfungsi dengan benar.
Listener tidak memiliki Server Backend yang dikonfigurasi, atau semua Server Backend yang dikonfigurasi memiliki bobot
0.
HTTP 504: Gateway timeout
Menunjukkan bahwa Server Backend gagal memberikan respons dalam periode timeout.
Server Backend langsung mengembalikan kode status 504: Periksa log akses. Jika field
upstream_statusbernilai504, berarti ALB meneruskan kode status tersebut dari Server Backend. Lakukan troubleshooting pada Layanan Backend.Upaya koneksi dari ALB ke Server Backend mengalami timeout: Timeout untuk membangun koneksi adalah 5 detik dan tidak dapat diubah. Lakukan pengambilan paket untuk menyelidiki mengapa Server Backend tidak merespons upaya koneksi dalam batas waktu 5 detik.
Respons Server Backend mengalami timeout: Nilai default untuk timeout permintaan koneksi adalah 60 detik. Periksa metrik
UpstreamResponseTimedi CloudMonitor dan fieldupstream_response_timedalam log akses untuk menentukan apakah respons Server Backend mengalami timeout.