Satu Query yang Menjatuhkan Hari Peluncuran
Sebagian besar sistem jatuh di hari peluncuran karena satu pencarian database tanpa index. Ini cara menemukannya dalam satu sore.
Sistem jatuh di hari yang bagus. Campaign-nya kena, pendaftaran dibuka, postingannya menyebar lebih jauh dari perkiraan — dan sesuatu yang setahun ini jalan tenang tumbang dalam empat menit.
Dari pengalaman kami, penyebabnya biasanya tunggal dan membosankan: satu pencarian database, jalan setiap kali halaman dibuka, menyapu seluruh tabel karena tidak ada yang menambahkan index.
Kenapa dia bersembunyi dengan baik
Di trafik normal, query itu makan beberapa milidetik. Tidak ada yang sadar, tidak ada dashboard yang menandainya, dan dia tetap tak terlihat selama bebannya datar. Di lonjakan, dia jadi antrean yang harus ditunggu semua hal lain, dan gejalanya muncul di tempat yang sama sekali berbeda — checkout lambat, laporan timeout, halaman yang tidak pernah selesai dimuat.
Itu sebabnya tim menghabiskan hari peluncuran memeriksa tampilan. Halamannya tidak apa-apa. Dia sedang menunggu.
Menemukannya sebelum tanggalnya
Kamu tidak butuh uji beban untuk mulai. Kamu butuh daftar query paling lambat, dan hampir semua database bisa memberitahumu:
- Nyalakan pencatatan query lambat, atau baca statistik statement yang sudah dikumpulkan database kamu
- Urutkan berdasarkan total waktu, bukan waktu terburuk sekali jalan — query yang dipanggil sepuluh ribu kali lebih penting daripada yang sekali makan dua detik
- Jalankan yang paling boros lewat query planner database, cari full table scan
- Tambahkan index-nya, ukur lagi, dan simpan angka sebelum dan sesudahnya
Perkirakan perbaikan pertama akan memunculkan sumbatan kedua. Itu normal: yang paling lambat menyembunyikan semua yang ada di belakangnya. Tiga putaran itu hasil khas dari mengerjakan ini dengan benar, bukan tanda ada yang dibangun buruk.
Lalu buktikan dengan beban
Membaca statistik query memberi tahu di mana risikonya. Hanya uji beban ke salinan produksi, dengan jumlah data yang realistis, yang memberi tahu di mana batas atasnya. Menguji ke database kosong tidak membuktikan apa pun — scan yang membunuhmu tidak ada saat tabelnya cuma dua belas baris.
Pendekatan lengkapnya, termasuk memanaskan kapasitas untuk jam mulai yang sudah diketahui, ada di platform campaign trafik tinggi. Bentuk nyatanya di sebuah campaign ada di studi kasusnya.
Solusi
Platform Campaign Trafik Tinggi
Untuk hari peluncuran, promo, atau pendaftaran yang semua orangnya datang di sepuluh menit yang sama.
Layanan
Backend Engineering
Bagian yang tidak kelihatan, dan yang menentukan produk kamu selamat atau tidak saat Senin ramai.
Cloud & DevOps
Deploy yang membosankan, biaya yang bisa diperkirakan, dan sistem yang tetap hidup di hari tersibuk kamu.
Topik
Performa & Skala
Apa yang jebol saat beban tinggi, kenapa di situ, dan cara tahu sebelum pelanggan tahu.