Memecahkan masalah

Halaman ini menjelaskan berbagai skenario error, dan memberikan panduan untuk menyelesaikan error tersebut.

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 yang 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 peringatan.

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, maka tetapkan nilai minimum menjadi kurang dari 64 MB.

  • Jika jenis node adalah redis-highmem-xlarge atau redis-highmem-2xlarge, maka tetapkan nilai minimum menjadi 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 konfigurasikan aplikasi klien Anda untuk mendeteksi koneksi yang tidak responsif ke Memorystore for Redis Cluster. Saat koneksi yang tidak responsif terdeteksi, klien harus meresetnya. Untuk membangun aplikasi yang tangguh, kami merekomendasikan konfigurasi klien berikut:

  • Konfigurasi parameter keep-alive TCP: tetapkan parameter TCP keepalive time, TCP keepalive interval, dan TCP keepalive probes sehingga klien mendeteksi dan menghentikan koneksi yang tidak responsif secara proaktif, bahkan saat koneksi tidak ada aktivitas. Misalnya, jika Anda menyetel parameter TCP keepalive time ke 30 detik, TCP keepalive interval ke 10 detik, dan TCP keepalive probes ke 3, maka 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 yang belum selesai dan berhenti merespons. Misalnya, jika Anda menyetel waktu tunggu ke 15 detik, klien akan mereset koneksi yang tidak responsif yang memiliki permintaan yang belum selesai 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 langkah berikut:

  • Tetapkan nilai yang lebih kecil untuk parameter maxmemory.
  • Gunakan kebijakan allkeys-lru maxmemory.

Saat memori cluster Anda penuh, dan penulisan baru masuk, Memorystore for Redis Cluster akan mengeluarkan kunci untuk memberi ruang bagi penulisan, berdasarkan kebijakan maxmemory cluster Anda. Kebijakan allkeys-lru mengeluarkan kunci yang paling lama tidak digunakan (LRU) dari seluruh keyset.

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 semestinya dan metrik eksternal mungkin tidak ada.

Mengisolasi sumber latensi cluster Anda

Untuk menentukan apakah latensi yang Anda alami berasal dari klaster Anda atau dari aplikasi klien dan lingkungan jaringan Anda, Anda dapat menggunakan 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 saat transit, Anda harus menambahkan flag --tls dan menentukan 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-menerus melakukan ping ke server dan menghitung nilai latensi minimum, maksimum, dan rata-rata.

  5. Untuk menghentikan perintah agar Anda dapat melihat hasilnya, tekan Ctrl+C.

Jika perintah menghasilkan latensi rata-rata yang rendah secara konsisten (biasanya 1 milidetik atau kurang), berarti cluster dalam kondisi baik dan merespons dengan cepat.

Jika perintah menunjukkan performa server yang normal, 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 hambatan 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 merebut 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 kehabisan ruang disk, menyebabkan kegagalan penulisan, dan memblokir operasi yang memerlukan pembuatan replika dan sinkronisasi penuh.

Memorystore for Redis Cluster menerapkan batas untuk mengatur throughput penulisan. Hal ini memastikan penulisan ulang AOF dapat mengimbangi workload penulisan tinggi yang berkelanjutan.