Penyelesaian masalah ketidakstabilan layanan Kagi.com
- Sedang diselidiki - Masalah terjadi setelah deployment dan tim sedang bekerja untuk menanganinya. (12 Januari 16:45 UTC)
- Pemantauan - Perubahan konfigurasi yang diduga menjadi penyebab masalah telah dibatalkan, dan layanan terus dipantau hingga kembali normal. (12 Januari 18:30 UTC)
- Pembaruan - Untuk sepenuhnya memulihkan stabilitas, lalu lintas akan dihentikan sementara dan pengguna akan diarahkan ke halaman ini. Detail tambahan akan diberikan seiring perkembangan situasi saat layanan dipulihkan dengan beban yang dikendalikan. (12 Januari 20:26 UTC)
- Pemantauan - Lalu lintas telah dipulihkan dan layanan terus dipantau hingga sepenuhnya kembali normal. (12 Januari 21:14 UTC)
- Terselesaikan - Semua layanan beroperasi normal. Kagi menyampaikan terima kasih kepada para pengguna yang telah menunggu penyelesaian masalah ini.
Analisis pasca-insiden
- Zac, pemimpin teknis Kagi, membagikan analisis pasca-insiden yang rinci terkait gangguan layanan minggu lalu.
- Sebagai respons terhadap insiden ini, senior engineer Seth dan DevOps engineer Luan bekerja bersama.
- Ada pihak-pihak yang menyalahgunakan layanan dan mengeksploitasi bottleneck infrastruktur, sehingga langkah mitigasi segera diambil dan perbaikan sedang dilakukan di berbagai area kode maupun komunikasi.
Kronologi insiden
- Sekitar pukul 17:30 pada 12 Januari, masalah infrastruktur dikenali melalui pemantauan internal dan laporan masalah dari pengguna.
- Sifat masalah ini menyebabkan loading lambat atau timeout halaman bagi pengguna di berbagai wilayah.
- Penyelesaiannya memakan waktu cukup lama, dan penjelasan diberikan mengenai latar belakang, progres, serta rencana ke depan.
Proses pemecahan masalah teknis
- Awalnya, masalah terjadi secara kebetulan bersamaan dengan upgrade resource RAM tambahan pada VM.
- Pemantauan melaporkan latensi tinggi dan masalah pada connection pool database aplikasi.
- Connection pool mencapai kondisi jenuh, yang berarti total koneksi melebihi batas maksimum koneksi yang telah dikonfigurasi.
- Sambil mengevaluasi kesehatan internal database dan performa query, beberapa instance diganti untuk menguji efek pengurangan kemacetan.
- Karena penggantian sebagian instance tampak membantu, lalu lintas pengguna dihentikan sementara untuk mereset seluruh connection pool sepenuhnya sekaligus.
- Setelah meninjau kondisi database, menjadi jelas bahwa akar masalahnya adalah contention tinggi pada row di tabel pengguna.
- Contention ini meningkatkan latensi penulisan secara tajam, memberi backpressure pada connection pool aplikasi, dan pada akhirnya menghabiskan semua koneksi yang tersedia.
- Hingga saat itu, Kagi menggunakan database single-core termurah yang tersedia di GCP, yang membawa risiko database menjadi lumpuh dengan mudah.
- Setelah mengidentifikasi pelaku yang berniat buruk, ditemukan akun yang dibuat dalam 24 jam terakhir dan satu akun pengguna yang melakukan lebih dari 60.000 pencarian dalam waktu singkat.
- Fitur pencarian pada akun tersebut dihapus, dan hotfix diterbitkan untuk menonaktifkan penulisan spesifik yang menyebabkan masalah.
- Pada tengah malam, masalah telah sepenuhnya terselesaikan, dan sinyal bahwa para pelaku kembali terus dipantau dengan ketat.
Langkah selanjutnya
- Banyak pelajaran diambil dari insiden ini, dan rencana segera untuk lebih memperkuat sistem serta memperbaiki proses komunikasi saat insiden sudah mulai dijalankan.
- Pertama, diakui bahwa pembaruan pada halaman status tidak cukup cepat.
- Kagi akan berpindah ke platform halaman status yang memungkinkan pemantauan internal otomatis lebih mudah dipublikasikan kepada pengguna agar kondisi kesehatan platform dapat dipahami secara real-time.
- Query yang menyebabkan masalah sedang dimitigasi secara langsung, dan load test sedang dijalankan untuk melihat apakah masih ada kelemahan serupa lainnya.
- Pemantauan tambahan akan dipasang agar lebih cepat menunjuk ke titik yang tepat di infrastruktur, sehingga waktu tidak terbuang mengejar sinyal yang keliru seperti kali ini.
- Sistem untuk mendeteksi jenis penyalahgunaan ini sedang diperkuat, dan karena dampaknya tidak hanya pada performa tetapi juga langsung menimbulkan biaya, perlu diterapkan pembatasan otomatis untuk menegakkannya.
- Batasan baru sudah diberlakukan pada saat posting ini dibuat, dan dampaknya akan terus dipantau serta disesuaikan sesuai kebutuhan.
- Jika merasa akses ke Kagi terblokir secara keliru, pengguna diminta menghubungi support@kagi.com.
Pendapat GN⁺
- Kagi mengalami masalah latensi penulisan akibat contention row pada tabel pengguna, yang memberikan backpressure pada connection pool aplikasi dan menyebabkan gangguan layanan.
- Masalah ini merupakan akibat dari risiko yang timbul karena Kagi menggunakan database single-core termurah di GCP.
- Melalui insiden ini, tim Kagi menunjukkan upaya untuk meningkatkan stabilitas dan transparansi layanan dengan memperkuat sistem, memperbaiki komunikasi dengan pengguna, dan menetapkan pembatasan otomatis untuk mencegah penyalahgunaan. Upaya ini mencerminkan komitmen Kagi untuk menyediakan layanan yang lebih andal bagi para pengguna.
1 komentar
Opini Hacker News
Opini tentang insiden yang terjadi bersamaan dengan upgrade infrastruktur
Pengalaman pengguna terhadap halaman status Kagi
Komentar yang membagikan pengalaman pribadi
Komentar tentang pengalaman startup
Komentar tentang observabilitas sistem internal
Opini pengguna berbayar tentang keandalan Kagi
Komentar tentang scraper yang menyebabkan gangguan layanan
Komentar tentang pengalaman menggunakan Kagi dan postmortem
Komentar tentang database single-core yang digunakan di GCP
Komentar tentang scraping otomatis