Saat terjadi gangguan, log melonjak, dan server yang mengirim log secara sinkron menjadi makin lambat karena log itu sendiri.
Mengapa Error terjadi, volume kirim log dan metrik melonjak → Akibatnya Pengumpul log tertinggal, dan server yang mengirim secara sinkron ikut menunggu → Di layar Saat gangguan, patah-patah dan freeze menjadi lebih parah karena log
Saat banyak pemain berkumpul, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game) · Turut terlibat Infrastruktur server (Tim Infrastruktur)
Tugas Tim Pengembang Game
Kirim secara asinkron, lakukan sampling, buang log jika buffer penuh, kirim log error yang sama secara digabung.
Tugas Tim Infrastruktur
Siapkan kapasitas pengumpul log berdasarkan lonjakan volume saat gangguan, pasang alert untuk penumpukan di pengumpul.
Di grafik
Melonjak acak sesekali · Volume kirim log, antrean pengumpul log
Yang diperiksa
Periksa jumlah baris dan byte log per detik di server serta antrean dan jumlah log yang dibuang oleh agen pengumpul log, bersama waktu tick. Jika ada thread yang berhenti, periksa dengan bcc offcputime -p apakah thread itu menunggu di penulisan atau pengiriman log
Cocok jika
Saat tick melonjak, volume log melonjak menjadi puluhan kali lipat dari biasanya, dan waktu tunggu thread game terpusat pada call stack penulisan atau pengiriman log
Tidak cocok jika
Volume log sama seperti biasa, atau thread game tidak menunggu di bagian log: lonjakan log hanya akibat dari gangguan, jadi cari terpisah penyebab yang pertama kali memicu error
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Sumber
Logging in C#Microsoft Metode logging .NET bersifat sinkron, jadi jika storage lambat disarankan menulis dulu ke storage yang cepat lalu memindahkannya kemudian
Asynchronous loggersApache Software Foundation Logging asinkron menyerap lonjakan singkat dengan antrean, tetapi jika output terus lambat, antrean penuh dan kecepatannya turun ke kecepatan output yang paling lambat, atau log dibuang sesuai kebijakan (Discard)