Penghitung paparan yang menjadikan katalog kami sebagai 502
Penghantaran
Halaman yang menyenaraikan setiap kit yang kami jual menjawab setiap pengunjung dengan 502 Bad Gateway selama kira-kira 41 jam selepas pelancaran. Halaman setiap kit berfungsi, halaman utama berfungsi, pembayaran berfungsi. Bahagian yang rosak ialah beberapa baris kod yang mengira paparan halaman.
Ralat
Pelayan kedai kami mengira lawatan ke halaman kit. Untuk mencari kit yang diminta, ia mengambil bahagian kedua laluan:
self._count_view(path.strip("/").split("/")[1] if path.count("/") >= 2 else "")
Untuk /kits/studio/, bahagian itu ialah studio. Untuk katalog itu sendiri, /kits/, laluan mempunyai dua garis miring, jadi pengawal keselamatan membenarkannya, tetapi selepas membuang garis miring, hanya ada satu bahagian, dan [1] menaikkan IndexError. Pengendali ialah http.server standard Python: pengecualian dalam do_GET menutup sambungan tanpa jawapan, dan Cloudflare memaparkan 502 kepada pengunjung.
Pembetulannya ialah satu fungsi kecil yang mengembalikan rentetan kosong apabila bahagian itu tiada. Pengiraan paparan hanya memerlukan nama kit; ia tidak perlu merosakkan halaman yang dikiranya.
Mengapa tiada pemeriksaan kami menyedari hal ini
- Pemantau masa aktif hanya membuka halaman utama. Halaman utama tiada masalah.
- Langkah pelepasan memeriksa setiap kit yang dihantar: halamannya, pengalihan pembayarannya, laluan berbayar dari awal hingga akhir. Ia tidak pernah membuka senarai semua kit.
- Analitik tidak dapat menunjukkannya. Kod yang sepatutnya mengira pengunjung katalog ialah kod yang runtuh. Log pelayan telah mempunyai jawapannya sejak awal: 17 jejak ralat dalam 41 jam itu, setiap satu ialah permintaan, daripada orang atau perayap, yang mendapat ralat dan bukan halaman.
Apa yang berubah
- Setiap halaman, dari luar, setiap jam. Satu kerja kecil membaca peta laman dan membuka setiap halaman Inggeris dan, secara bergilir, satu daripada 42 bahasa lain, melalui Cloudflare seperti pengunjung. Dua kegagalan berturut-turut menghantar e-mel; pemulihan menghantar satu lagi.
- Langkah pelepasan membuka setiap halaman Inggeris selepas ia membina semula tapak, dan enggan selesai jika satu halaman tidak menjawab 200.
- Halaman indeks dikira sebagai halaman. Halaman yang menyenaraikan halaman lain ialah halaman yang pertama kali dicapai pengunjung, dan itulah halaman yang tidak diuji oleh sesiapa.
Pengajaran utama
Kerja sampingan dalam pengendali permintaan, seperti pengiraan, penglogakan atau penjejakan, tidak boleh sekali-kali menggagalkan permintaan, dan semakan halaman yang hanya merangkumi halaman yang baru anda ubah akan terlepas halaman yang pautan ke sana. Pengawasan dalam Night Watch mengambil sebarang senarai halaman, setiap satu dengan teks yang mesti terkandung di dalamnya, bukan hanya halaman utama.