全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Memecahkan Masalah Pemanfaatan CPU Tinggi pada Sebuah Instans

更新时间:Nov 10, 2025

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.

    Catatan

    Untuk 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:

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

  1. Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.

  2. 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 Insightimage.png

    • 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.

    Catatan

    Untuk informasi lebih lanjut tentang cara mengubah arsitektur dan tipe instans, lihat Ubah konfigurasi instans.

Temukan dan optimalkan koneksi singkat

Langkah-langkah pemecahan masalah

  1. Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.

  2. 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.

Peringatan

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.

Catatan

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

  1. Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.

  2. 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.

    Catatan

    Dalam 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

  1. Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.

  2. 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 Insightimage.png

    • 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

  1. Gunakan fitur pemantauan kinerja untuk mengidentifikasi periode waktu spesifik ketika pemanfaatan CPU tinggi. Untuk informasi lebih lanjut, lihat Lihat data pemantauan kinerja.

  2. 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.