Halaman ini menjelaskan praktik terbaik yang harus diikuti saat menggunakan Memorystore for Memcached.
Mendesain aplikasi untuk menangani cache yang tidak ditemukan
Anda harus mengikuti praktik terbaik desain cache standar dengan mendesain cache untuk menangani cache-miss dan ketidaktersediaan layanan. Lihat Perjanjian Tingkat Layanan untuk mengetahui informasi tentang komitmen Memorystore for Memcached terhadap waktu beroperasi.
Desain aplikasi Anda sehingga cache yang tidak ada dan periode nonaktif layanan sementara tidak menghentikan aplikasi Anda mengambil data dari database pokok yang didukung instance Memcached Anda.
Selain itu, jika Anda mengalami ketidaktersediaan ruang kunci, tunggu dan coba lagi menggunakan backoff eksponensial. Pastikan untuk menetapkan batas waktu setelah strategi percobaan ulang Anda dihentikan.
Menghubungkan ke node Memcached
Saat membuat kueri node Memcached dengan perintah seperti set
, get
, dan delete
, Anda
harus terhubung langsung ke alamat IP node. Anda dapat
menjalankan perintah ini di endpoint Auto Discovery, tetapi hal ini tidak
direkomendasikan karena menyebabkan penurunan performa untuk aplikasi Anda.
Penemuan otomatis direkomendasikan
Sebaiknya gunakan layanan Penemuan Otomatis Memorystore for Memcached. Layanan ini mengotomatiskan pengelolaan alamat IP cluster saat menambahkan atau menghapus node dari cluster Anda. Untuk petunjuk cara menyiapkan penemuan otomatis untuk cluster Anda, lihat Menggunakan Layanan Penemuan Otomatis.
Mengonfigurasi parameter max-item-size
dengan benar
Bagian ini menjelaskan cara terbaik untuk mengonfigurasi parameter max-item-size
. Untuk mengetahui
langkah-langkah dalam menyesuaikan parameter konfigurasi ini, lihat Mengonfigurasi instance Memcached.
Untuk mengetahui daftar lengkap parameter konfigurasi Memcached yang tersedia, lihat Konfigurasi Memcached.
Nilai yang didukung dan nilai default
Untuk Memcached open source, nilai minimum untuk max-item-size
adalah 1KiB
, nilai maksimumnya adalah 1 GiB
, dan nilai defaultnya adalah 1 MiB
. Untuk
Memorystore for Memcached, nilai minimumnya adalah 512 KiB
, nilai maksimumnya adalah 128
MiB
, dan nilai defaultnya adalah 1 MiB
. Selain itu, nilai apa pun yang Anda tetapkan untuk konfigurasi ini
harus dapat dibagi rata dengan 512 KiB
.
Menyimpan entri dalam cache yang lebih besar dari max-item-size
yang dikonfigurasi
Saat Anda mencoba meng-cache entri yang lebih besar dari max-item-size
yang dikonfigurasi, Memcached
akan gagal melakukan operasi dan menampilkan nilai salah. Jika memungkinkan, buat logika ke dalam aplikasi Anda untuk menampilkan error ini dari klien OSS Memcached sehingga Anda dapat men-debug-nya. Mencoba menyimpan entri dalam cache yang lebih besar dari max-item-size
yang dikonfigurasi dapat menyebabkan latensi tinggi untuk instance Anda.
Menetapkan max-item-size
ke nilai maksimum
Anda dapat menyelesaikan beberapa masalah dengan parameter max-item-size
dengan menetapkannya ke
nilai maksimum; namun, ini bukan praktik yang baik, jadi Anda tidak boleh menggunakan
strategi ini dalam produksi. Manajemen memori Memcached didasarkan pada slab, dan
menyimpan item yang lebih besar dari slab akan menyebabkan alokasi memori
yang tidak efisien.
Menghindari masalah konfigurasi max-item-size
Pertama, cari tahu ukuran item maksimum yang diperlukan untuk cache Anda. Tetapkan
max-item-size
agar sedikit lebih besar dari ukuran item terbesar, sebagai margin
keamanan.
Perhatikan bahwa ukuran nilai yang ditulis ke cache dapat berubah di aplikasi Anda dari waktu ke waktu. Selain itu, cluster dapat salah dikonfigurasi (misalnya, saat bermigrasi dari satu lingkungan ke lingkungan lain). Tindakan tambahan yang dapat Anda lakukan adalah memvalidasi ukuran item maksimum dalam aplikasi, sehingga permintaan ditolak jika aplikasi Anda mencoba menyimpan item dalam cache yang lebih besar dari setelan yang dikonfigurasi.
Cara menyeimbangkan cluster Memcached yang tidak seimbang
Cara cluster yang tidak seimbang terjadi, dan risiko terkait
Dalam beberapa kasus yang jarang terjadi, saat Anda membuat instance Memcached, node dapat didistribusikan secara tidak merata di seluruh zona dalam region. Hal ini terjadi saat zona tidak tersedia pada saat yang sama saat Anda menyediakan cluster.
Cluster yang tidak seimbang meningkatkan potensi kehilangan data karena node tidak didistribusikan secara merata. Cluster tidak otomatis melakukan penyeimbangan ulang saat zona yang nonaktif kembali online.
Cara menyeimbangkan ulang cluster
Anda dapat menyeimbangkan kembali cluster dengan meningkatkan jumlah node dalam cluster untuk sementara, lalu menskalakan jumlah node ke jumlah node asli. Tindakan penskalaan ke atas dan penskalaan ke bawah ini memungkinkan sistem Memorystore for Memcached mendistribusikan ulang node secara merata di seluruh zona yang tersedia.
Keberhasilan metode ini untuk menyeimbangkan kembali cluster Anda bergantung pada ketersediaan zona yang dimaksud. Google Cloud saat ini tidak mencantumkan zona yang tersedia/tidak tersedia, sehingga Anda hanya dapat mengetahui apakah zona sedang online jika node diseimbangkan dengan benar selama operasi penskalaan.
Praktik terbaik Cloud Monitoring
Untuk melacak performa cache dari waktu ke waktu, Anda harus menggunakan Cloud Monitoring untuk memantau beberapa metrik Memorystore untuk Memcached yang penting:
- Penggunaan memori (
memcache.googleapis.com/node/cache_memory
) - Persentase penggunaan CPU (
memcache.googleapis.com/node/cpu/utilization
)
Melacak kedua metrik ini dari waktu ke waktu akan membantu Anda menentukan seberapa efisien cluster digunakan, dan apakah Anda harus mempertimbangkan untuk meningkatkan atau mengurangi ukuran cluster.
Misalnya, jika metrik menunjukkan bahwa penggunaan memori dan penggunaan CPU telah meningkat seiring waktu menjadi lebih dari 80%, ada kemungkinan tren ini akan berlanjut. Akibatnya, Anda dapat meningkatkan ukuran instance lebih awal sehingga cache memiliki ruang untuk menyimpan nilai baru saat persyaratan resource aplikasi meningkat.
Sebaiknya tetapkan pemberitahuan saat penggunaan memori dan penggunaan CPU mencapai 80%.
Atau, melacak metrik ini dari waktu ke waktu dapat menunjukkan bahwa Anda tidak menggunakan semua ruang dan resource CPU yang saat ini Anda miliki. Dalam hal ini, akan lebih hemat biaya jika Anda mengurangi ukuran cluster.
Langkah selanjutnya
- Pelajari layanan Penemuan Otomatis lebih lanjut.
- Tinjau parameter konfigurasi Memcached yang dapat diubah.