Halaman ini menjelaskan berbagai skenario error, dan memberikan panduan untuk mengatasi error.
Skenario replikasi
Bagian ini menjelaskan masalah replikasi yang mungkin terjadi pada cluster Anda.
Bagaimana cara memantau jeda replikasi?
Memorystore for Redis Cluster memiliki metrik /cluster/replication/maximum_offset_diff. Metrik ini memantau perbedaan offset replikasi maksimum (dalam byte) untuk node di cluster utama.
Dengan menjaga perbedaan offset replikasi tetap rendah, replika dapat melakukan operasi sinkronisasi inkremental lebih sering dan dengan biaya lebih rendah daripada operasi sinkronisasi penuh.
Sebaiknya tetapkan nilai minimum untuk metrik maximum_offset_diff. Jika nilai minimum terlampaui, Memorystore for Redis Cluster dapat memberi tahu Anda melalui pemberitahuan.
Berdasarkan jenis node untuk cluster Anda, sebaiknya tetapkan nilai minimum sebagai berikut:
Jika jenis node adalah
redis-shared-core-nano,redis-standard-small,redis-highmem-medium,redis-highcpu-medium, atauredis-standard-large, tetapkan nilai minimum agar kurang dari 64 MB.Jika jenis node adalah
redis-highmem-xlargeatauredis-highmem-2xlarge, tetapkan nilai minimum agar kurang dari 1 GB.
Skenario error konektivitas
Bagian ini menjelaskan masalah konektivitas yang mungkin dialami cluster Anda.
Error koneksi yang disebabkan oleh aturan firewall
Aturan firewall dapat menyebabkan error koneksi dengan memblokir port yang digunakan Memorystore for Redis Cluster. Untuk kedua endpoint Private Service Connect cluster Anda, izinkan port TCP 11000 hingga 13047. Untuk mengetahui informasi selengkapnya tentang endpoint ini, lihat Alamat jaringan yang dicadangkan.
Error koneksi yang disebabkan oleh kebijakan organisasi
Anda mungkin memiliki kebijakan organisasi yang memblokir koneksi Private Service Connect ke cluster Anda.
Jika kebijakan organisasi Anda menggunakan kebijakan .restrictPrivateServiceConnectProducer, izinkan folder 961333125034, yang merupakan folder khusus untuk Memorystore for Redis Cluster. Contoh:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/961333125034
Jika kebijakan organisasi Anda menggunakan kebijakan .disablePrivateServiceConnectCreationForConsumers, izinkan SERVICE_PRODUCERS. Contoh:
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
Error koneksi yang disebabkan oleh koneksi yang tidak responsif
Sebaiknya konfigurasi aplikasi klien Anda untuk mendeteksi koneksi yang tidak responsif ke Memorystore for Redis Cluster. Saat koneksi yang tidak responsif terdeteksi, klien harus meresetnya. Untuk membuat aplikasi yang tangguh, sebaiknya gunakan konfigurasi klien berikut:
- Konfigurasi parameter TCP keep-alive: tetapkan parameter
TCP keepalive time,TCP keepalive interval, danTCP keepalive probesagar klien mendeteksi dan menghapus koneksi yang tidak responsif secara proaktif, bahkan saat koneksi tidak aktif. Misalnya, jika Anda menetapkan parameterTCP keepalive timeke 30 detik,TCP keepalive intervalke 10 detik, danTCP keepalive probeske 3, klien akan mereset koneksi tidak aktif yang tidak responsif dalam waktu satu menit. - Konfigurasi waktu tunggu pengguna TCP: tetapkan waktu tunggu ini di klien Anda untuk mereset koneksi yang memiliki permintaan tertunda dan berhenti merespons. Misalnya, jika Anda menetapkan waktu tunggu ke 15 detik, klien akan mereset koneksi tidak responsif yang memiliki permintaan tertunda setelah 15 detik.
Skenario penggunaan CPU
Bagian ini menjelaskan masalah penggunaan CPU yang mungkin dialami cluster Anda.
Buffer output cluster Anda kehabisan ruang
Jika buffer output cluster Anda kehabisan ruang, lakukan hal berikut:
- Tetapkan nilai yang lebih kecil untuk parameter
maxmemory. - Gunakan kebijakan
allkeys-lrumaxmemory.
Saat memori cluster Anda penuh, dan ada operasi tulis baru, Memorystore for Redis Cluster akan mengeluarkan kunci untuk memberi ruang bagi operasi tulis, berdasarkan kebijakan maxmemory cluster Anda. Kebijakan allkeys-lru mengeluarkan kunci yang paling lama tidak digunakan (LRU) dari seluruh kumpulan kunci.
Sebaiknya pantau maxmemory dan memori yang digunakan cluster Anda. Hal ini membantu Anda mengetahui apakah cluster Anda mencapai kapasitas cluster yang disediakan.
Selain itu, dengan mengurangi nilai untuk parameter maxmemory, Anda akan mendapatkan lebih banyak ruang untuk overhead.
Mengapa metrik eksternal mungkin tidak ada untuk cluster Anda?
Jika cluster Anda mengalami penggunaan CPU yang tinggi atau resource cluster habis (misalnya, karena memiliki terlalu banyak koneksi), cluster mungkin berperilaku tidak normal dan metrik eksternal mungkin tidak ada.
Mengisolasi sumber latensi cluster Anda
Untuk menentukan apakah latensi yang Anda alami berasal dari cluster, aplikasi klien, atau lingkungan jaringan Anda, gunakan alat redis-cli untuk menjalankan pengujian latensi berkelanjutan.
Untuk mengisolasi sumber latensi cluster Anda, lakukan hal berikut:
Hubungkan ke VM Compute Engine yang berada di region dan jaringan VPC yang sama dengan cluster Anda.
Jika belum diinstal, instal alat
redis-clidi VM Anda.Untuk VM berbasis Debian atau Ubuntu, jalankan perintah berikut:
sudo apt-get install redis-toolsUntuk VM berbasis RHEL atau CentOS, jalankan perintah berikut:
sudo yum install redis
Untuk mengukur latensi cluster dalam milidetik, jalankan perintah berikut:
redis-cli --latency -h DISCOVERY_ENDPOINT_ADDRESS -p PORT
Jika cluster Anda menggunakan enkripsi transit, tambahkan flag
--tlsdan tentukan certificate authority (CA) Anda untuk terhubung.Lakukan penggantian berikut:
- DISCOVERY_ENDPOINT_ADDRESS: alamat IP endpoint penemuan cluster Anda.
- PORT: nomor port yang dicadangkan untuk endpoint penemuan cluster Anda. Biasanya, nomor port ini adalah 6379.
Biarkan perintah berjalan selama beberapa menit. Alat ini terus melakukan ping ke server dan menghitung nilai latensi minimum, maksimum, dan rata-rata.
Untuk menghentikan perintah dan melihat hasilnya, tekan
Ctrl+C.
Jika perintah menampilkan latensi rata-rata yang konsisten rendah (biasanya 1 milidetik atau kurang), cluster dalam kondisi baik dan merespons dengan cepat.
Jika perintah menunjukkan latensi yang konsisten rendah, tetapi aplikasi klien Anda masih mengalami penundaan, masalah berikut mungkin menyebabkan latensi:
- Jaringan: Traffic yang dirutekan di berbagai region atau zona antara klien dan cluster Anda dapat menyebabkan penundaan jaringan yang signifikan.
- Klien: Penggunaan CPU atau memori yang tinggi pada klien, kumpulan koneksi yang habis, atau bottleneck logika aplikasi dapat meningkatkan total waktu pulang pergi yang dialami klien.
Skenario persistensi
Bagian ini menjelaskan masalah persistensi yang mungkin terjadi pada cluster Anda.
Traffic tulis Anda melebihi kemampuan Memorystore for Redis Cluster untuk memadatkan dan mengklaim kembali ruang melalui penulisan ulang AOF
Jika situasi ini terjadi, File Hanya Tambah (AOF) akan bertambah lebih cepat daripada yang dapat dikelola oleh proses penulisan ulang. Hal ini menyebabkan disk habis, menyebabkan kegagalan penulisan, dan memblokir operasi yang memerlukan pembuatan replika dan sinkronisasi penuh.
Memorystore for Redis Cluster menerapkan batasan untuk mengatur throughput tulis. Hal ini memastikan bahwa penulisan ulang AOF dapat mengikuti beban kerja tulis tinggi yang berkelanjutan.