Halaman ini menjelaskan berbagai skenario error, dan memberikan panduan untuk menyelesaikan error tersebut.
Skenario replikasi
Bagian ini menjelaskan masalah replikasi yang mungkin terjadi pada instance Anda.
Bagaimana cara memantau jeda replikasi?
Memorystore for Valkey memiliki metrik /instance/replication/maximum_offset_diff. Metrik ini memantau perbedaan offset replikasi maksimum (dalam byte) untuk node dalam instance primer.
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 Valkey dapat memberi tahu Anda melalui
notifikasi.
Berdasarkan jenis node untuk instance Anda, sebaiknya tetapkan nilai minimum, sebagai berikut:
Jika jenis node adalah
shared-core-nano,custom-pico,custom-micro,custom-mini,standard-small,highmem-medium,highcpu-medium, ataustandard-large, tetapkan batasnya menjadi kurang dari 64 MB.Jika jenis node adalah
highmem-xlargeatauhighmem-2xlarge, tetapkan nilai minimum agar kurang dari 1 GB.
Apa yang Anda lakukan jika ada jeda replikasi antara instance utama dan replikanya?
Mungkin ada jeda replikasi yang signifikan jika instance utama memiliki terlalu banyak operasi tulis, dan replika tidak dapat mengejar untuk mereplikasi operasi ini. Untuk mengatasi masalah ini, sebaiknya Anda menskalakan kapasitas instance dengan meningkatkan jumlah shard untuk instance.
Skenario penggunaan CPU
Bagian ini menjelaskan masalah penggunaan CPU yang mungkin dialami instance Anda.
Apa yang Anda lakukan jika buffer output instance Anda kehabisan ruang?
Jika buffer output instance Memorystore for Valkey Anda kehabisan ruang, lakukan hal berikut:
- Tetapkan nilai yang lebih kecil untuk parameter
maxmemory. - Gunakan kebijakan
allkeys-lrumaxmemory.
Jika memori instance Anda penuh, dan ada operasi tulis baru yang masuk, Memorystore for Valkey akan mengeluarkan kunci untuk memberi ruang bagi operasi tulis, berdasarkan kebijakan maxmemory instance Anda. Kebijakan allkeys-lru mengeluarkan kunci yang paling
lama tidak digunakan (LRU) dari seluruh set kunci.
Sebaiknya pantau maxmemory dan memori yang digunakan instance Anda. Hal ini
membantu Anda mengetahui apakah instance Anda mencapai kapasitas instance 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 instance Anda?
Jika instance Anda mengalami pemakaian CPU yang tinggi atau sumber daya instance habis (misalnya, karena memiliki terlalu banyak koneksi), instance mungkin berperilaku tidak semestinya dan metrik eksternal mungkin tidak ada.
Bagaimana cara mengisolasi sumber latensi instance Anda?
Untuk menentukan apakah latensi yang Anda alami berasal dari instance, aplikasi klien, atau lingkungan jaringan Anda, gunakan alat valkey-cli untuk menjalankan pengujian latensi berkelanjutan.
Untuk mengisolasi sumber latensi instance Anda, lakukan hal berikut:
Hubungkan ke VM Compute Engine yang berada di region dan jaringan VPC yang sama dengan instance Anda.
Jika belum diinstal, instal alat
valkey-clidi VM Anda.Untuk VM berbasis Debian atau Ubuntu, jalankan perintah berikut:
sudo apt-get install valkey-toolsUntuk VM berbasis RHEL atau CentOS, jalankan perintah berikut:
sudo yum install valkey-tools
Untuk mengukur latensi instance dalam milidetik, jalankan perintah berikut:
redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
Jika instance Anda menggunakan enkripsi saat transit, tambahkan tanda
--tlsdan tentukan certificate authority (CA) Anda untuk terhubung.Lakukan penggantian berikut:
- ENDPOINT_ADDRESS: alamat IP endpoint instance Anda.
- PORT: nomor port yang dicadangkan untuk endpoint instance 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 dan melihat hasilnya, tekan
Ctrl+C.
Jika perintah menghasilkan latensi rata-rata yang rendah secara konsisten (biasanya 1 milidetik atau kurang), berarti instance dalam kondisi baik dan merespons dengan cepat.
Jika perintah menunjukkan latensi rendah secara konsisten, tetapi aplikasi klien Anda masih mengalami penundaan, masalah berikut mungkin menyebabkan latensi:
- Jaringan: Traffic yang dirutekan di berbagai region atau zona antara klien dan instance 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 pengelolaan memori
Bagian ini menjelaskan masalah pengelolaan memori yang mungkin dialami instance Anda.
Metrik mana yang dapat Anda gunakan untuk menentukan bahwa instance Anda mengalami tekanan memori?
Untuk memantau penggunaan memori
untuk instance Memorystore for Valkey, sebaiknya lihat metrik
/instance/memory/maximum_utilization. Jika penggunaan memori
instance mendekati 80% dan Anda memperkirakan penggunaan data akan meningkat, maka
tingkatkan ukuran instance
untuk meningkatkan performa dan menyediakan ruang bagi data baru.
Skenario pemantauan
Bagian ini menjelaskan masalah pemantauan yang mungkin dialami instance Anda.
Bagaimana cara menyiapkan pemberitahuan untuk Memorystore for Valkey?
Anda dapat menggunakan Cloud Monitoring untuk menyetel pemberitahuan yang akan memberi tahu Anda jika ada metrik yang melebihi batas yang Anda tetapkan untuk instance Anda. Untuk mengetahui informasi selengkapnya tentang cara menyetel pemberitahuan di Cloud Monitoring, lihat Menyetel pemberitahuan Monitoring untuk penggunaan memori.
Skenario pengelolaan koneksi
Bagian ini menjelaskan masalah pengelolaan koneksi yang mungkin dialami instance Anda.
Jika Anda mencapai batas koneksi atau menerima waktu tunggu koneksi, apa yang harus Anda lakukan?
Saat Anda mencapai batas koneksi, klien Anda gagal terhubung ke server Anda. Hal ini dikenal sebagai penolakan koneksi.
Jika ini terjadi, lakukan hal berikut:
- Gunakan metrik
/instance/node/stats/rejected_connections_countuntuk menentukan jumlah koneksi yang ditolak oleh Memorystore for Valkey karena node instance mencapai batas klien maksimum. - Gunakan metrik
/instance/node/clients/connected_clientsuntuk menentukan jumlah klien yang terhubung ke node instance. Dengan begitu, Anda dapat melihat apakah semua node dalam instance berada di bawah batas. - Hentikan koneksi yang bocor atau tidak diinginkan menggunakan perintah
client kill. - Kurangi jumlah koneksi atau ukuran kumpulan di aplikasi klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi yang terkait dengan aplikasi klien.
- Sesuaikan batas klien maksimum. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi instance.
- Menskalakan instance Anda ke jenis node yang lebih besar agar instance Anda memiliki batas koneksi yang lebih tinggi.
Skenario waktu tunggu
Bagian ini menjelaskan masalah waktu tunggu yang mungkin dialami instance Anda.
Jika Anda menerima waktu tunggu I/O, apa yang akan Anda lakukan?
Jika operasi baca atau tulis di Memorystore for Valkey gagal diselesaikan dalam waktu yang ditentukan, maka akan terjadi waktu tunggu I/O habis. Waktu tunggu ini dapat terjadi karena berbagai alasan. Misalnya, satu atau beberapa node instance Anda mungkin kelebihan beban.
Jika Anda menerima waktu tunggu I/O, lakukan hal berikut:
- Gunakan metrik
instance/cpu/maximum_utilizationuntuk menentukan pemakaian CPU untuk node di instance Anda, dari 0,0 (0%) hingga 1,0 (100%). Sebaiknya semua node memiliki persentase pemanfaatan CPU kurang dari 80%. Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik penggunaan CPU. - Saat klien terputus dari server karena batas waktu server habis, coba lagi dengan backoff eksponensial dan dengan Jitter. Hal ini membantu menghindari beberapa klien membebani server secara bersamaan.
Skenario error konektivitas
Bagian ini menjelaskan masalah konektivitas yang mungkin dialami instance Anda.
Error koneksi yang disebabkan oleh aturan firewall
Jika Anda tidak mengizinkan port yang benar di firewall, instance Anda mungkin mengalami error koneksi karena firewall dapat memblokir port yang digunakan Memorystore for Valkey.
Untuk semua endpoint Private Service Connect instance, Anda harus mengizinkan port TCP 6379, serta 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 dapat memiliki kebijakan organisasi yang memblokir koneksi Private Service Connect ke instance Memorystore for Valkey.
Jika kebijakan organisasi Anda menggunakan kebijakan .restrictPrivateServiceConnectProducer
policy, masukkan nomor folder 672235397475 ke daftar yang diizinkan, yang merupakan folder
khusus untuk Memorystore for Valkey. Contoh:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/672235397475
Jika kebijakan organisasi Anda menggunakan kebijakan .disablePrivateServiceConnectCreationForConsumers, maka masukkan SERVICE_PRODUCERS ke daftar yang diizinkan. 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 Valkey. 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 menetapkan waktu tunggu 15 detik, klien akan mereset koneksi yang tidak responsif yang memiliki permintaan yang belum selesai setelah 15 detik.
Menangani error untuk instance Cluster Mode Disabled
Jika aplikasi terhubung ke endpoint baca instance yang tidak memiliki replika baca, koneksi akan ditutup dan pesan error
ERR no replicas foundakan muncul. Dalam hal ini, coba hubungkan aplikasi ke endpoint utama atau tambahkan replika baca ke instance.Jika terjadi failover, koneksi yang ada dari aplikasi Anda akan ditutup dan pesan error
ERR role change occurredakan muncul. Anda juga akan melihat pesan error ini jika aplikasi Anda terhubung ke endpoint baca dari instance, dan semua replika baca dari instance tersebut gagal. Dalam hal ini, aplikasi harus mencoba lagi koneksi dengan backoff eksponensial.
Skenario persistensi
Bagian ini menjelaskan masalah persistensi yang mungkin terjadi pada instance Anda.
Traffic tulis Anda melebihi kemampuan Memorystore for Valkey 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 disk, menyebabkan kegagalan penulisan, dan memblokir operasi yang memerlukan pembuatan replika dan sinkronisasi penuh.
Memorystore for Valkey menerapkan batas pengamanan untuk mengatur throughput penulisan. Hal ini memastikan penulisan ulang AOF dapat mengimbangi workload penulisan tinggi yang berkelanjutan.