Topik ini menjelaskan penyebab dari peristiwa latensi umum serta memberikan saran untuk menanganinya.
Informasi latar belakang
Redis 2.8.13 memperkenalkan fitur baru bernama pemantauan latensi untuk membantu mengidentifikasi dan menyelesaikan masalah latensi yang mungkin terjadi. Fitur ini mengumpulkan data hanya dalam 160 detik terakhir dan mencatat peristiwa dengan latensi tertinggi setiap detik.
Tair (Redis OSS-compatible) menyediakan fitur wawasan latensi tingkat lanjut. Fitur ini mencatat hingga 27 peristiwa, durasi eksekusi semua perintah, serta menyimpan statistik latensi selama tiga hari terakhir. Untuk informasi lebih lanjut tentang peristiwa dan ambang batas latensinya, lihat Peristiwa Khusus Umum.
Peristiwa latensi umum
Peristiwa | Deskripsi | Penyebab Potensial | Saran |
EvictionCycle | Jumlah waktu yang dikonsumsi untuk satu siklus penghapusan, termasuk waktu untuk memilih dan menghapus data serta waktu tunggu thread latar belakang. | Peristiwa ini dipengaruhi oleh beberapa faktor. Analisis peristiwa EvictionDel dan EvictionLazyFree diperlukan untuk menentukan penyebabnya. |
|
EvictionDel | Jumlah waktu yang dikonsumsi untuk menghapus kunci selama siklus penghapusan. | Peristiwa ini terjadi ketika kunci besar dihapus. |
|
EvictionLazyFree | Jumlah waktu yang dikonsumsi menunggu thread latar belakang untuk melepaskan memori. | Peristiwa ini terjadi ketika sistem menunggu thread latar belakang untuk melepaskan memori sampai penggunaan memori berada di bawah pengaturan Maxmemory atau pelepasan selesai. Ini terjadi jika tidak ada kunci yang sesuai untuk dihapus dan thread latar belakang sedang melepaskan memori seperti menghapus kunci besar. |
|
ExpireCycle | Jumlah waktu yang dikonsumsi untuk satu siklus kedaluwarsa kunci. | Peristiwa ini terjadi ketika kunci besar dihapus. |
|
ExpireDel | Jumlah waktu yang dikonsumsi untuk menghapus kunci selama siklus kedaluwarsa kunci. | Peristiwa ini terjadi ketika kunci besar dihapus. | |
AofWrite | Jumlah waktu yang dikonsumsi untuk menulis data ke file append-only (AOF). Setiap kali data berhasil ditulis ke AOF, peristiwa AofWrite dan salah satu dari peristiwa AofWriteAlone, AofWriteActiveChild, dan AofWritePendingFsync dicatat. | Peristiwa ini dapat dipengaruhi oleh beberapa faktor. Analisis peristiwa AofWriteAlone, AofWriteActiveChild, dan AofWritePendingFsync diperlukan untuk menentukan penyebabnya. | Jika persistensi data tidak diperlukan, nonaktifkan persistensi AOF dengan mengatur appendonly ke tidak. |
AofWriteAlone | Jumlah waktu yang dikonsumsi untuk penulisan AOF. | Peristiwa ini terjadi ketika jumlah data besar ditulis atau terdapat hambatan performa terkait disk. | |
AofWriteActiveChild | Jumlah waktu yang dikonsumsi untuk menulis data ke AOF, selama itu data juga ditulis ke disk oleh proses anak lainnya. | Peristiwa ini terjadi ketika data ditulis ke disk oleh proses anak lainnya selama penulisan data ke AOF. | |
AofWritePendingFsync | Jumlah waktu yang dikonsumsi untuk menulis data ke AOF, selama itu operasi fsync dilakukan oleh proses latar belakang. | Peristiwa ini terjadi ketika operasi fsync dilakukan oleh proses latar belakang selama penulisan data ke AOF. | |
Commands | Jumlah waktu yang dikonsumsi untuk perintah reguler yang tidak dilabeli sebagai cepat. | Peristiwa ini terjadi ketika perintah tertentu dijalankan, seperti perintah KEYS yang melintasi semua data. |
|
FastCommand | Jumlah waktu yang dikonsumsi untuk perintah yang dilabeli sebagai cepat. Kompleksitas waktu perintah cepat adalah O(1) atau O(log N). | Peristiwa ini terjadi ketika perintah tertentu dijalankan pada kunci besar, seperti perintah | |
Fork | Jumlah waktu yang dikonsumsi untuk memanggil fork(). | Peristiwa ini terjadi selama penulisan ulang AOF. | Jika peristiwa disebabkan oleh penulisan ulang AOF dan persistensi data tidak diperlukan, nonaktifkan persistensi AOF dengan mengatur appendonly ke tidak. |