Pemanfaatan CPU tinggi pada sebuah instans Tair (dan Redis Edisi Open-Source) biasanya disebabkan oleh tiga faktor utama. Pertama, layanan dengan konkurensi tinggi dan throughput tinggi mengonsumsi sumber daya CPU yang signifikan. Hal ini dianggap normal jika sumber daya CPU belum mencapai titik hambatan. Kedua, beban layanan melebihi ekspektasi, dan sumber daya CPU dari instans Redis Edisi Open-Source tidak cukup untuk memenuhi kebutuhan bisnis Anda. Anda dapat menyelesaikan hambatan sumber daya ini dengan meningkatkan jumlah shard atau replika, atau dengan melakukan peningkatan ke Tair (Edisi Perusahaan). Ketiga, penggunaan yang tidak tepat, seperti menjalankan perintah konsumsi tinggi atau mengakses kunci panas atau kunci besar, menyebabkan pemanfaatan CPU yang sangat tinggi secara abnormal. Jika rata-rata pemanfaatan CPU melebihi 70% atau rata-rata puncak pemanfaatan CPU dalam periode 5 menit berturut-turut melebihi 90%, Anda harus segera menyelidiki dan menyelesaikan masalah tersebut untuk memastikan aplikasi Anda berjalan stabil.
Apa penyebab pemanfaatan CPU tinggi secara abnormal
Perintah konsumsi tinggi: Ini adalah perintah dengan kompleksitas waktu O(N), di mana N adalah nilai besar. Contohnya termasuk KEYS, HGETALL, atau menggunakan MGET, MSET, HMSET, dan HMGET untuk mengoperasikan banyak kunci sekaligus.
Karena Redis bersifat single-threaded, menjalankan perintah konsumsi tinggi pada sebuah instans dapat menyebabkan perintah lainnya mengantri, yang memperlambat respons aplikasi. Dalam kasus ekstrem, ini dapat memblokir seluruh instans, menyebabkan timeout aplikasi atau lalu lintas melewati lapisan cache dan langsung mengenai database backend, yang dapat memicu efek avalan.
CatatanUntuk informasi lebih lanjut tentang kompleksitas waktu setiap perintah, lihat Perintah.
Kunci panas: Kunci panas ada ketika jumlah permintaan akses untuk satu atau beberapa kunci secara signifikan melebihi yang lain. Kunci panas mengonsumsi sejumlah besar sumber daya CPU instans, yang memengaruhi latensi akses untuk kunci lainnya. Dalam arsitektur kluster, jika kunci panas terkonsentrasi pada beberapa shard data, hal itu dapat menyebabkan pemanfaatan CPU tidak merata, di mana pemanfaatan CPU beberapa shard jauh lebih tinggi daripada yang lain.
Kunci besar: Kunci besar menempati lebih banyak memori. Mengakses kunci besar juga secara signifikan meningkatkan beban CPU dan lalu lintas jaringan instans. Kunci besar lebih mungkin menjadi titik panas, yang menyebabkan pemanfaatan CPU tinggi. Jika kunci besar terkonsentrasi pada beberapa shard data, hal itu dapat menyebabkan ketidakseimbangan dalam pemanfaatan CPU, penggunaan bandwidth, dan penggunaan memori.
Koneksi singkat: Pembentukan dan penghentian koneksi yang sering mengonsumsi sejumlah besar sumber daya instans untuk penanganan koneksi.
AOF: Instans memiliki file hanya-tambah (AOF) diaktifkan secara default. Ketika instans berada di bawah beban tinggi, perilaku penulisan disk AOF meningkatkan pemanfaatan CPU dan latensi respons keseluruhan instans.
Klasifikasi skenario pemanfaatan CPU tinggi secara abnormal
Pemanfaatan CPU tinggi biasanya terjadi dalam salah satu dari tiga skenario berikut:
Selama periode waktu tertentu, pemanfaatan CPU tiba-tiba meningkat, kadang-kadang mencapai 100%. Untuk pemecahan masalah dan solusi, lihat Peningkatan mendadak dalam pemanfaatan CPU.
Pemanfaatan CPU satu node data tinggi, sedangkan pemanfaatan CPU node data lainnya rendah. Untuk pemecahan masalah dan solusi, lihat Ketidaksesuaian pemanfaatan CPU di seluruh node data.
Pemanfaatan CPU satu node proxy tinggi, sedangkan pemanfaatan CPU node proxy lainnya rendah. Untuk pemecahan masalah dan solusi, lihat Ketidaksesuaian pemanfaatan CPU di seluruh node proxy.
Ambil langkah-langkah untuk mengurangi pemanfaatan CPU berdasarkan skenario spesifik Anda.
Peningkatan mendadak dalam pemanfaatan CPU
Jika pemanfaatan CPU global instans meningkat secara mendadak, ikuti langkah-langkah berikut untuk memecahkan masalah dan mengoptimalkannya.
Temukan dan nonaktifkan perintah konsumsi tinggi
Langkah-langkah pemecahan masalah
Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.
Gunakan metode berikut untuk menemukan perintah konsumsi tinggi:
Fitur Latency Insight mencatat latensi semua perintah dan acara kustom untuk instans. Anda dapat menggunakan informasi latensi untuk periode waktu dan node tertentu untuk menemukan perintah konsumsi tinggi dengan latensi panjang.
Gambar 1. Contoh Latency Insight

Fitur log kueri lambat mencatat perintah yang berjalan lebih lama dari ambang batas tertentu (20 ms secara default). Anda dapat menggunakan pernyataan kueri lambat dan waktu eksekusi untuk periode waktu dan node tertentu untuk menemukan perintah konsumsi tinggi dengan waktu eksekusi panjang.
Solusi
Evaluasi dan nonaktifkan perintah berisiko tinggi dan konsumsi tinggi, seperti FLUSHALL, KEYS, dan HGETALL. Untuk informasi lebih lanjut, lihat Nonaktifkan perintah berisiko tinggi.
Opsional: Sesuaikan instans menggunakan salah satu metode berikut berdasarkan kebutuhan bisnis Anda:
Ubah instans ke arsitektur pemisahan baca/tulis untuk mengalihkan perintah atau aplikasi konsumsi tinggi.
Ubah instans ke tipe Tair optimasi memori untuk menggunakan fitur multi-threaded-nya guna mengurangi pemanfaatan CPU.
CatatanUntuk informasi lebih lanjut tentang cara mengubah arsitektur dan tipe instans, lihat Ubah konfigurasi instans.
Temukan dan optimalkan koneksi singkat
Langkah-langkah pemecahan masalah
Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.
Di halaman pemantauan kinerja, periksa apakah pemanfaatan CPU dan jumlah koneksi tinggi, tetapi permintaan per detik (QPS) lebih rendah dari yang diharapkan. Jika demikian, koneksi singkat mungkin ada. Lihat solusi di bawah ini.
Solusi
Anda dapat mengubah koneksi singkat menjadi koneksi persisten, misalnya, menggunakan kolam koneksi JedisPool. Untuk informasi lebih lanjut, lihat Tutorial koneksi klien.
Anda dapat mengubah instans ke tipe Tair optimasi memori. Instans Tair optimasi memori memiliki fitur optimasi koneksi singkat.
Nonaktifkan AOF
Instans memiliki AOF diaktifkan secara default. Ketika instans berada di bawah beban tinggi, operasi AOF yang sering dapat meningkatkan pemanfaatan CPU.
Jika logika bisnis Anda mengizinkan, Anda dapat mempertimbangkan untuk menonaktifkan persistensi. Anda juga dapat menjadwalkan cadangan data instans ke periode lalu lintas rendah atau jendela waktu pemeliharaan untuk mengurangi dampak.
Jika instans Anda adalah tipe Tair optimasi memori, menonaktifkan AOF mencegah Anda memulihkan data dari file AOF. Ini berarti fitur flashback data tidak tersedia. Anda hanya dapat memulihkan data ke instans baru dari set cadangan. Lanjutkan dengan hati-hati.
Evaluasi kapasitas layanan
Setelah memecahkan masalah dan mengoptimalkan dengan langkah-langkah di atas, jika beban keseluruhan instans masih sering tinggi (rata-rata pemanfaatan CPU di atas 70%) selama operasi normal, kemungkinan ada hambatan kinerja.
Pertama, periksa akses bisnis yang abnormal, seperti perintah abnormal atau akses tidak biasa dari host aplikasi tertentu. Masalah ini memerlukan optimasi di tingkat aplikasi. Jika semua akses normal, beban tinggi adalah hasil normal dari perilaku bisnis Anda. Untuk memastikan operasi yang stabil, Anda dapat meningkatkan spesifikasi instans, atau meningkatkannya ke arsitektur kluster atau arsitektur pemisahan baca/tulis. Untuk informasi lebih lanjut tentang cara meningkatkan instans, lihat Ubah konfigurasi instans.
Untuk memastikan operasi bisnis normal, sebelum Anda meningkatkan instans, beli instans berbayar sesuai penggunaan untuk menyelesaikan pengujian beban dan kompatibilitas. Anda dapat melepaskan instans setelah pengujian selesai.
Ketidaksesuaian pemanfaatan CPU di seluruh node data
Jika instans menggunakan arsitektur kluster atau arsitektur pemisahan baca/tulis, dan Anda menemukan bahwa beberapa node shard data memiliki pemanfaatan CPU tinggi sementara yang lain memiliki pemanfaatan CPU rendah, Anda dapat mengikuti langkah-langkah berikut untuk memecahkan masalah dan mengoptimalkan.
Temukan dan optimalkan kunci panas
Langkah-langkah pemecahan masalah
Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.
Di halaman riwayat Statistik Kunci Teratas, pilih node data dengan pemanfaatan CPU tinggi. Kemudian, berdasarkan periode waktu yang diidentifikasi di Langkah 1, pilih filter waktu dan klik View. Anda dapat melihat kunci panas apa yang ada selama periode ini.
Solusi
Pisahkan kunci panas berdasarkan logika bisnis, seperti berdasarkan ID pengguna atau rentang waktu.
Jika kunci panas dihasilkan oleh permintaan baca, Anda dapat mengubah instans ke arsitektur pemisahan baca/tulis untuk mengurangi tekanan permintaan baca pada setiap shard data.
CatatanDalam skenario dengan volume permintaan yang sangat tinggi, arsitektur pemisahan baca/tulis memiliki latensi replikasi yang tak terhindarkan, yang dapat menyebabkan membaca data kotor. Oleh karena itu, arsitektur ini bukan solusi optimal untuk skenario dengan tekanan baca/tulis tinggi dan persyaratan ketat untuk konsistensi data.
Temukan dan nonaktifkan perintah konsumsi tinggi
Langkah-langkah pemecahan masalah
Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.
Gunakan metode berikut untuk menemukan perintah konsumsi tinggi:
Fitur Latency Insight mencatat latensi semua perintah dan acara kustom untuk instans. Anda dapat menggunakan informasi latensi untuk periode waktu dan node tertentu untuk menemukan perintah konsumsi tinggi dengan latensi panjang.
Gambar 1. Contoh Latency Insight

Fitur log kueri lambat mencatat perintah yang berjalan lebih lama dari ambang batas tertentu (20 ms secara default). Anda dapat menggunakan pernyataan kueri lambat dan waktu eksekusi untuk periode waktu dan node tertentu untuk menemukan perintah konsumsi tinggi dengan waktu eksekusi panjang.
Solusi
Evaluasi dan nonaktifkan perintakan tinggi dan konsumsi tinggi, seperti FLUSHALL, KEYS, dan HGETALL. Untuk informasi lebih lanjut, lihat Nonaktifkan perintah berisiko tinggi.
Temukan dan optimalkan kunci besar
Langkah-langkah pemecahan masalah
Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.
Di halaman Analisis Kunci Penuh Offline, klik Analyze Now. Pilih node data dengan pemanfaatan CPU tinggi dan klik OK. Anda dapat melihat kunci besar apa yang ada selama periode ini.
Solusi
Berdasarkan kebutuhan bisnis Anda, Anda dapat membagi kunci besar menjadi kunci yang lebih kecil untuk mendistribusikan tekanan permintaan.
Ketidaksesuaian pemanfaatan CPU di seluruh node proxy
Jika instans menggunakan arsitektur kluster atau arsitektur pemisahan baca/tulis, dan Anda menemukan bahwa beberapa node proxy memiliki pemanfaatan CPU tinggi sementara node proxy lainnya memiliki pemanfaatan CPU rendah, Anda dapat mengikuti langkah-langkah berikut untuk memecahkan masalah dan mengoptimalkan.
Langkah-langkah pemecahan masalah
Di halaman Node Proxy dari Tren Kinerja, periksa apakah penggunaan Koneksi seimbang.
Solusi
Ambil langkah-langkah berikut berdasarkan apakah penggunaan koneksi seimbang:
Jika penggunaan koneksi seimbang: Mulai ulang klien layanan atau node proxy untuk menata ulang koneksi. Untuk memulai ulang node proxy, lihat Mulai ulang atau bangun ulang node proxy.
Jika penggunaan koneksi tidak seimbang: Ini biasanya disebabkan oleh operasi pipeline atau batch yang berukuran besar. Anda dapat mengurangi skala operasi ini, misalnya, dengan membaginya menjadi beberapa operasi yang lebih kecil.