Setelah DB dimulai ulang, cache di memori kosong, sehingga untuk sementara semua pembacaan data diambil dari disk.
Mengapa DB dimulai ulang karena maintenance → Akibatnya Data yang sering dipakai tidak ada di memori sehingga dibaca dari disk → Di layar Login dan loading lambat untuk sementara tepat setelah maintenance
Penanggung jawab utama Infrastruktur DB (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Buka server secara bertahap (gunakan antrean login untuk menambah jumlah pemain yang login sedikit demi sedikit).
Tugas Tim Infrastruktur
Lakukan warm-up cache setelah restart (periksa pengaturan simpan dan pulihkan buffer pool), untuk DB yang dipulihkan dari snapshot baca juga disknya lebih dulu.
Di grafik
Melonjak tepat setelah server dibuka · Pembacaan disk, hit rate buffer cache
Yang diperiksa
MySQL: periksa rasio Innodb_buffer_pool_reads (jumlah pembacaan dari disk karena data tidak ada di buffer pool) terhadap Innodb_buffer_pool_read_requests, serta progres warm-up di Innodb_buffer_pool_load_status. PostgreSQL: periksa blks_read dan blks_hit di pg_stat_database. Periksa juga jumlah pembacaan disk di server DB
Cocok jika
Tepat setelah restart, pembacaan disk melonjak dan hit rate rendah, lalu pulih seiring waktu, dan selama rentang itu login dan loading lambat
Tidak cocok jika
Hit rate sama seperti biasa tetapi lambat tepat setelah maintenance: lebih mungkin lonjakan login dan N+1 (db-login-storm) atau connection pool (db-pool)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
MySQL menyimpan daftar page di buffer pool saat dimatikan, lalu membacanya kembali di latar belakang saat dinyalakan, tetapi butuh waktu sampai buffer pool terisi penuh. Jika DB di cloud dipulihkan dari snapshot (salinan disk), disk itu sendiri juga lambat pada setiap blok yang pertama kali dibaca, sehingga masa lambat ini berlangsung lebih lama.
Saving and Restoring the Buffer Pool StateMySQL Untuk mempersingkat waktu warm-up setelah restart, daftar page yang baru dipakai (default 25%) disimpan saat dimatikan dan dibaca kembali saat dinyalakan; keduanya aktif secara default
Initialize Amazon EBS volumesAWS Volume yang dibuat dari snapshot mengalami latensi lebih tinggi dan performa lebih rendah sampai semua bloknya selesai diambil
Server Status VariablesMySQL Innodb_buffer_pool_reads (jumlah logical read yang harus dibaca langsung dari disk karena tidak ada di buffer pool), Innodb_buffer_pool_read_requests, Innodb_buffer_pool_load_status (progres warm-up)