Memecahkan masalah

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, atau redis-standard-large, tetapkan nilai minimum agar kurang dari 64 MB.

  • Jika jenis node adalah redis-highmem-xlarge atau redis-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, dan TCP keepalive probes agar klien mendeteksi dan menghapus koneksi yang tidak responsif secara proaktif, bahkan saat koneksi tidak aktif. Misalnya, jika Anda menetapkan parameter TCP keepalive time ke 30 detik, TCP keepalive interval ke 10 detik, dan TCP keepalive probes ke 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-lru maxmemory.

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:

  1. Hubungkan ke VM Compute Engine yang berada di region dan jaringan VPC yang sama dengan cluster Anda.

  2. Jika belum diinstal, instal alat redis-cli di VM Anda.

    • Untuk VM berbasis Debian atau Ubuntu, jalankan perintah berikut:

      sudo apt-get install redis-tools
      
    • Untuk VM berbasis RHEL atau CentOS, jalankan perintah berikut:

      sudo yum install redis
      
  3. 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 --tls dan 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.
  4. Biarkan perintah berjalan selama beberapa menit. Alat ini terus melakukan ping ke server dan menghitung nilai latensi minimum, maksimum, dan rata-rata.

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