Memecahkan masalah server Azure Cache for Redis
Bagian ini membahas pemecahan masalah yang disebabkan oleh kondisi di server Azure Cache for Redis atau mesin virtual yang menghostingnya.
Catatan
Beberapa langkah pemecahan masalah dalam panduan ini menyertakan petunjuk untuk menjalankan perintah Redis dan memantau beragam metrik performa. Untuk informasi dan instruksi lebih lanjut, lihat artikel di bagian Informasi tambahan.
Beban server tinggi
Beban server yang tinggi berarti server Redis sibuk dan tidak dapat memenuhi permintaan, yang menyebabkan waktu tunggu habis. Periksa metrik Beban Server pada cache Anda dengan memilih Pemantauan dari menu Sumber Daya di sebelah kiri. Anda melihat grafik Beban Server di panel kerja di bawah Insight. Atau, tambahkan satu set metrik ke Beban Server di bawah Metrik.
Berikut adalah beberapa opsi yang perlu dipertimbangkan untuk beban server yang tinggi.
Peningkatan skala atau peluasan skala
Perluas skala untuk menambahkan lebih banyak pecahan, sehingga beban didistribusikan ke beberapa proses Redis. Selain itu, pertimbangkan untuk meningkatkan ke ukuran cache yang lebih besar dengan lebih banyak inti CPU. Untuk informasi selengkapnya, lihat Tanya Jawab Umum perencanaan Azure Cache for Redis.
Perubahan cepat dalam jumlah koneksi klien
Untuk informasi selengkapnya, lihat Menghindari lonjakan koneksi klien.
Perintah yang berjalan lama atau mahal
Bagian ini dipindahkan. Untuk informasi selengkapnya, lihat Perintah yang berjalan lama.
Penskalaan
Operasi penskalaan membutuhkan CPU dan memori yang intensif karena dapat melibatkan pemindahan data di sekitar node dan perubahan topologi kluster. Untuk informasi selengkapnya, lihat Penskalaan.
Pemeliharaan server
Jika Azure Cache for Redis Anda mengalami failover, semua koneksi klien dari node yang turun akan ditransfer ke node yang masih berjalan. Beban server dapat melonjak karena peningkatan koneksi. Anda dapat mencoba me-reboot aplikasi klien Anda sehingga semua koneksi klien dibuat ulang dan didistribusikan kembali di antara dua node.
Penggunaan memori tinggi
Tekanan memori pada server dapat menyebabkan berbagai masalah performa yang menunda pemrosesan permintaan. Ketika tekanan memori hit, sistem akan mem-page data ke disk, yang menyebabkan sistem melambat secara signifikan.
Berikut adalah beberapa kemungkinan penyebab tekanan memori:
- Cache diisi dengan data mendekati kapasitas maksimumnya
- Server Redis melihat fragmentasi memori yang tinggi
Fragmentasi kemungkinan disebabkan ketika pola beban menyimpan data dengan variasi ukuran yang tinggi. Misalnya, fragmentasi mungkin terjadi saat data tersebar dalam ukuran 1 KB dan 1 MB. Saat kunci 1 KB dihapus dari memori yang ada, kunci 1 MB tidak dapat masuk ke dalamnya sehingga menyebabkan fragmentasi. Demikian pula, jika kunci 1 MB dihapus dan kunci 1,5 MB ditambahkan, itu tidak dapat masuk ke dalam memori reklamasi yang ada. Hal ini menyebabkan memori bebas yang tidak terpakai dan menghasilkan lebih banyak fragmentasi.
Jika nilai used_memory_rss
lebih tinggi dari 1,5 kali metrik used_memory
, ada fragmentasi dalam memori. Fragmentasi dapat menyebabkan masalah ketika:
- Penggunaan memori mendekati batas memori maksimum untuk cache, atau
UsedMemory_RSS
lebih tinggi dari batas Memori Maks, yang berpotensi mengakibatkan kesalahan halaman dalam memori.
Jika cache terfragmentasi dan berjalan di bawah tekanan memori tinggi, sistem melakukan failover untuk mencoba memulihkan memori Resident Set Size (RSS).
Redis memperlihatkan dua statistik, used_memory
dan used_memory_rss
, melalui perintah INFO yang dapat membantu Anda mengidentifikasi masalah ini. Anda dapat melihat metrik ini menggunakan portal.
Validasi bahwa nilai maxmemory-reserved
dan maxfragmentationmemory-reserved
ditetapkan dengan benar.
Ada beberapa kemungkinan perubahan yang dapat Anda lakukan untuk membantu menjaga penggunaan memori tetap sehat:
- Konfigurasi kebijakan memori dan atur waktu kedaluwarsa pada kunci Anda. Kebijakan ini mungkin tidak cukup jika Anda memiliki fragmentasi.
- Konfiguasi nilai terpesan maxmemory yang cukup besar untuk mengompensasi fragmentasi memori.
- Buat pemberitahuan pada metrik seperti memori yang digunakan untuk diberi tahu lebih awal tentang potensi dampak.
- Skalakan ke ukuran cache yang lebih besar dengan kapasitas memori yang lebih besar. Untuk informasi selengkapnya, lihat Tanya Jawab Umum perencanaan Azure Cache for Redis.
Untuk rekomendasi tentang manajemen memori, lihat Praktik terbaik untuk manajemen memori.
Perintah jangka panjang
Bagian ini dipindahkan. Untuk informasi selengkapnya, lihat Perintah yang berjalan lama.
Batasan bandwidth sisi server
Bagian ini dipindahkan. Untuk informasi selengkapnya, lihat Batasan bandwidth jaringan.