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, atauredis-standard-large, maka tetapkan nilai minimum menjadi kurang dari 64 MB.Jika jenis node adalah
redis-highmem-xlargeatauredis-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, danTCP keepalive probessehingga klien mendeteksi dan menghentikan koneksi yang tidak responsif secara proaktif, bahkan saat koneksi tidak ada aktivitas. Misalnya, jika Anda menyetel parameterTCP keepalive timeke 30 detik,TCP keepalive intervalke 10 detik, danTCP keepalive probeske 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-lrumaxmemory.
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:
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 saat transit, Anda harus menambahkan flag
--tlsdan 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.
Biarkan perintah berjalan selama beberapa menit. Alat ini terus-menerus melakukan ping ke server dan menghitung nilai latensi minimum, maksimum, dan rata-rata.
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.