全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Mengapa penggunaan memori yang dilaporkan dari suatu instans berbeda dengan penggunaan memori yang dipantau?

更新时间:Jul 02, 2025

Jika peringatan memori untuk instans Tair (Redis OSS-compatible) menunjukkan penggunaan memori tinggi atau jika aplikasi Anda mengalami pengecualian kehabisan memori (OOM), tetapi data pemantauan kinerja menunjukkan penggunaan memori rendah, Anda dapat merujuk pada topik ini untuk mendiagnosis masalah tersebut.

Deskripsi Masalah

Gejala 1:

Anda menerima peringatan memori untuk suatu instans, yang menunjukkan bahwa penggunaan memori melebihi ambang batas. Sebagai contoh, nilai rata-rata lebih besar dari atau sama dengan 90% selama tiga kali berturut-turut. Namun, halaman Pemantauan di konsol menunjukkan bahwa penggunaan memori jauh lebih rendah dari ambang batas.

Gejala 2:

Aplikasi Anda mengalami pengecualian perintah tidak diizinkan ketika memori yang digunakan > 'maxmemory', tetapi halaman Pemantauan di konsol menunjukkan bahwa memori tidak sepenuhnya terisi atau hanya satu node data memiliki penggunaan memori tinggi.

Penyebab

Mengapa penggunaan memori yang dipantau berbeda dengan penggunaan memori yang dilaporkan?

Jika penggunaan memori yang ditampilkan di halaman Pemantauan berbeda dengan penggunaan memori dalam informasi peringatan, instans Anda mungkin merupakan instans kluster. Anda sedang memeriksa informasi pemantauan di tingkat instans alih-alih di tingkat node data.

Periksa apakah nodeId = <ID Instans>-db-<Nomor> termasuk dalam detail instans dalam informasi peringatan yang Anda terima. Jika kondisi di atas benar, hanya penggunaan memori dari node data yang diidentifikasi oleh <ID Instans>-db-<Nomor> yang melebihi ambang batas.

Lakukan langkah-langkah berikut untuk memeriksa apakah penggunaan memori node data sama dengan penggunaan memori dalam informasi peringatan:

  1. Masuk ke konsol dan buka halaman Instans. Di bilah navigasi atas, pilih wilayah tempat instans yang ingin Anda kelola berada. Kemudian, temukan instans dan klik ID instans.

  2. Di panel navigasi sisi kiri, klik Pemantauan Kinerja.

  3. Klik tab Data Node dan pilih node data yang sesuai dengan <ID Instans>-db-<Nomor>. Periksa apakah penggunaan memori node data sama dengan penggunaan memori dalam informasi peringatan.image.png

Mengapa penggunaan memori node data secara signifikan lebih tinggi daripada penggunaan memori node data lainnya?

Jika penggunaan memori satu atau beberapa node data dalam instans kluster secara signifikan lebih tinggi dibandingkan dengan node data lainnya, kemungkinan terjadi skew data. Anda dapat menggunakan fitur diagnosis instans untuk memeriksa apakah skew data terjadi pada instans saat ini.

Mengapa skew memori terjadi?

Dalam sebagian besar kasus, skew memori terjadi karena alasan berikut:

  • Terdapat kunci besar.

    Instans kluster menggunakan algoritma cyclic redundancy check (CRC) untuk menghitung slot tempat suatu kunci berada dan menulis data ke node data tempat slot tersebut berada.

    Jika suatu kunci menyimpan sejumlah besar bidang atau bidang yang besar ukurannya, kunci tersebut dapat menjadi sangat besar dan menyebabkan skew memori meskipun kunci-kunci didistribusikan secara merata di berbagai node data.

  • Tag hash digunakan.

    Saat Anda menggunakan tag hash seperti user:{1000}:name, instans melakukan perhitungan CRC pada string yang diapit oleh tanda kurung kurawal dan memetakan kunci dengan tag hash yang sama ke slot yang sama. Dengan cara ini, kunci-kunci tersebut berada di node data yang sama. Jika tag hash identik dikonfigurasikan untuk sejumlah besar kunci, data mungkin terkonsentrasi pada satu node data dan menyebabkan skew memori.

Solusi

Periksa apakah ada kunci besar dan pisahkan kunci besar tersebut

Identifikasi kunci besar

Anda dapat menggunakan fitur analisis kunci offline untuk mengidentifikasi kunci besar. Untuk informasi lebih lanjut, lihat Gunakan fitur analisis kunci offline.

Untuk informasi tentang cara mengidentifikasi kunci besar, lihat Identifikasi dan tangani kunci besar dan hotkeys.

Pisahkan kunci besar

Sebagai contoh, Anda dapat membagi kunci HASH yang berisi puluhan ribu anggota menjadi beberapa kunci HASH dengan jumlah anggota yang lebih sesuai. Untuk instans kluster, pembagian kunci besar dapat membantu menyeimbangkan penggunaan memori di beberapa shard data.

Periksa apakah tag hash digunakan

Jika tag hash digunakan, pertimbangkan untuk membagi tag hash menjadi beberapa tag hash berdasarkan kebutuhan bisnis Anda. Dengan cara ini, data didistribusikan secara merata di berbagai node data.

Tingkatkan spesifikasi instans

Menambah spesifikasi instans dengan meningkatkan memori yang dialokasikan untuk setiap shard dapat berfungsi sebagai solusi sementara untuk mencegah skew memori. Untuk informasi lebih lanjut, lihat Ubah konfigurasi instans.

Penting
  • Sistem memulai pra-pemeriksaan untuk skew data selama perubahan spesifikasi instans. Jika jenis instans yang Anda pilih tidak dapat menangani masalah skew data, sistem akan melaporkan kesalahan. Pilih jenis instans dengan spesifikasi yang lebih tinggi dan coba lagi.

  • Setelah Anda meningkatkan spesifikasi instans, skew penggunaan memori mungkin berkurang. Namun, skew juga dapat terjadi pada bandwidth dan sumber daya CPU.