Satu request, dua koneksi TCP yang terpisah
- Browser mengirim SYN ke IP anycast. Edge membalas SYN-ACK, browser mengirim ACK, dan koneksi TCP pertama terbentuk.
- Handshake TLS terjadi dan berakhir di edge, bukan di server kamu.
- Edge membaca request HTTP, mengecek cache, lalu kalau perlu membuka koneksi TCP kedua ke IP origin (atau memakai ulang koneksi yang sudah ada).
- Origin memproses request dan membalas ke edge. Edge meneruskan balasan itu ke browser lewat koneksi pertama.
Membaca error: siapa yang sebenarnya bicara
| Gejala yang dilihat pengunjung | Lokasi masalah yang paling mungkin |
|---|---|
| 521 | Origin menolak koneksi: service mati, port tertutup, atau firewall mengirim RST |
| 522 | SYN dari edge ke origin tidak dibalas: firewall drop, server overload, atau jalur edge ke origin terganggu |
| 524 | TCP ke origin terbentuk, tapi respons HTTP tidak datang tepat waktu: query lambat, worker penuh |
| 502/504 dengan halaman bawaan Nginx atau Apache | Reverse proxy di origin tidak bisa menjangkau upstream-nya, misalnya PHP-FPM |
| Timeout tanpa halaman Cloudflare, hanya di ISP atau wilayah tertentu | Jalur pengunjung ke edge bermasalah, bisa karena routing |
Bagaimana route leak BGP memutus jalur ke edge
net.ipv4.tcp_syn_retries. Browser biasanya punya timeout sendiri dan menyerah lebih dulu. Karena loss-nya sering parsial, sebagian SYN lolos dan sebagian tidak. Hasilnya adalah pola khas: kadang bisa, kadang tidak, kadang lambat sekali. Koneksi yang sudah terbentuk pun bisa tersendat di tengah handshake TLS atau saat transfer data, karena setiap segmen yang hilang harus menunggu retransmisi.
Satu hal yang membuat insiden seperti ini lama ditangani: jalur manajemen dan telemetri milik operator jaringan bisa ikut melewati link yang sama-sama macet. Untuk pembahasan kenapa route leak terlihat persis seperti hosting down, lihat Why a BGP Route Leak Looks Like Your Host's Outage But Isn't.
Cek dari origin: apakah request masih sampai
BASH
sudo tcpdump -ni any -c 50 'dst port 443 and tcp[tcpflags] & tcp-syn != 0'BASH
curl -s -o /dev/null --resolve 'example.com:443:198.51.100.20' https://example.com/ -w 'connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} code=%{http_code}
'--resolve memaksa curl memakai IP origin tanpa mengubah SNI dan header Host. Ada dua catatan. Pertama, kalau firewall origin hanya mengizinkan IP Cloudflare, tes ini memang akan gagal dari luar, dan itu wajar. Kedua, kalau origin memakai sertifikat Origin CA, verifikasi TLS di curl akan gagal. Untuk diagnosis sementara kamu boleh menambahkan -k, asalkan paham bahwa verifikasi sertifikat sedang dilewati. Kalau origin merespons cepat dari luar sementara pengunjung timeout, server kamu bukan masalahnya.
Cek dari sisi pengunjung: edge mana yang mereka temui
BASH
curl -s https://example.com/cdn-cgi/tracecolo berisi kode tiga huruf lokasi datacenter yang melayani request, dan field ip menunjukkan IP publik klien. Kalau perintah ini juga timeout, pengunjung memang tidak bisa menjangkau edge, jadi tidak ada yang bisa diperbaiki di origin. Kalau berhasil tapi colo menunjukkan lokasi yang jauh dan tidak biasa, misalnya pengunjung dari Indonesia mendarat di benua lain, itu tanda routing sedang tidak normal. Bandingkan hasilnya dari beberapa ISP. Pola yang hanya muncul di ISP atau wilayah tertentu hampir selalu mengarah ke masalah jalur, bukan masalah server.
Dari sisi support, langkah ini juga membantu menjelaskan ke customer dengan bukti, bukan dugaan. Kalimat seperti log server tidak menerima request dari jaringan Anda, dan datacenter edge yang Anda jangkau tidak sesuai lokasi Anda jauh lebih jelas daripada sekadar bilang server kami normal. Setelah itu, cek halaman status resmi provider CDN untuk melihat apakah ada insiden routing yang sedang diumumkan.
Sebagai aturan praktis, sebelum restart atau mengubah config apa pun, cari tahu dulu apakah request masih sampai ke origin. Kalau masih sampai dan gagal di sana, telusuri worker, upstream, dan database. Kalau tidak sampai, restart hanya menambah downtime dan menghapus jejak yang sebenarnya kamu butuhkan. Yang perlu dilakukan adalah mengumpulkan data dari beberapa jaringan, mencatat colo dan Ray ID, lalu menunggu atau mengeskalasi ke pihak yang memegang jalurnya.