Jika di tengah tick server menunggu respons DB atau penulisan file, seluruh jalannya game di server berhenti selama waktu itu.
Mengapa Di dalam tick, server menunggu query dan penyimpanan DB, penulisan log, atau pemanggilan API eksternal → Akibatnya Jika DB butuh 100 ms, tick juga berhenti 100 ms → Di layar Setiap kali DB atau disk melambat, seluruh field tersendat sesaat
Saat melakukan aksi tertentu, Sesekali secara acak
Penanggung jawab
Penanggung jawab utama Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Alihkan semua pekerjaan lambat (query dan penyimpanan DB, penulisan log, pemanggilan API eksternal) ke pemrosesan asinkron dan terapkan hasilnya di tick berikutnya (jika hanya memasang timeout, server tetap berhenti selama menunggu).
Kisaran angka
Pulang-pergi ke DB di data center yang sama hanya 0,5 ms, tetapi jika dipanggil 100 kali dalam satu tick, totalnya 50 ms. Itu saja sudah menghabiskan seluruh budget server 20 tick.
Di grafik
Melonjak acak sesekali · Waktu tick server, latensi query DB
Yang diperiksa
Tampilkan grafik waktu tick bersama latensi query DB (slow query log dan sebagainya) dan latensi disk pada sumbu waktu yang sama. Jika tidak ada metrik tick, periksa di mana thread game menunggu dengan bcc offcputime -p
Cocok jika
Waktu lonjakan tick bertepatan dengan waktu lonjakan latensi DB atau file, dan waktu tunggu thread game terkumpul di call stack penerimaan respons DB atau penulisan file
Tidak cocok jika
Latensi DB dan disk tenang tetapi tick melonjak: lebih mungkin jeda GC atau perebutan lock
ASP.NET Core Best PracticesMicrosoft Akses data, I/O, dan pekerjaan yang lama dipanggil secara asinkron; pemanggilan blocking yang sinkron menyebabkan thread pool habis dan respons terlambat