Halaman ini menjelaskan konfigurasi Reserved Memory untuk instance Memcached Anda, dan kapan harus Increase Reserved Memory jika diperlukan. Halaman ini juga menjelaskan praktik terbaik lainnya yang perlu Anda ketahui agar dapat mengelola memori secara efektif untuk instance Memcached Anda.
Memorystore menambahkan memori ekstra ke instance Anda, yang tidak terlihat oleh Anda, untuk mengakomodasi overhead yang dibuat oleh proses Memcached. Namun, bergantung pada workload spesifik Anda, overhead memori dapat bertambah lebih besar daripada memori tambahan yang kami sediakan untuk tujuan ini.
Jika penggunaan memori lebih besar daripada total memori sistem Memorystore, kondisi kehabisan memori (OOM) dapat menyebabkan penghapusan data cache secara menyeluruh, yang dapat mengganggu aplikasi dan bisnis Anda.
Bagian berikut menguraikan prinsip umum yang harus diikuti saat mengonfigurasi instance Memorystore untuk Memcached. Bagian ini juga membahas metrik dan pemberitahuan yang dapat Anda gunakan untuk memantau memori, serta menjelaskan tindakan yang dapat Anda lakukan.
Konsep pengelolaan memori
Kapasitas instance
Kapasitas instance adalah jumlah memori yang Anda sediakan dalam GiB, dan yang ditagihkan kepada Anda. Memori cache tidak sama dengan kapasitas instance karena memori cache tidak tetap. Namun, saat Anda membuat instance Memcached, kapasitas instance sama dengan memori cache secara default.
Misalnya, jika Anda memilih kapasitas instance sebesar 5 GiB, secara default instance Anda memiliki ruang 5 GiB untuk menyimpan item.
Batas memori cache
Memori cache adalah ukuran total memori yang tersedia untuk digunakan sebagai cache oleh instance Memcached Anda. Secara default, memori cache sama dengan kapasitas instance Anda. Namun, menyesuaikan Memori yang Dicadangkan dapat mengurangi memori cache. Untuk mengetahui detail selengkapnya, lihat Memori yang Dicadangkan. Setelah memori cache penuh, Memcached mulai mengeluarkan item yang disimpan dalam cache untuk memberi ruang bagi penulisan baru.
Perlu diketahui bahwa saat melihat metrik memori cache, memori cache yang dilaporkan untuk node Memcached hanya mencakup ruang yang ditempati oleh item. Artinya, Memcached mungkin meremehkan total penggunaan memori cache. Memori tambahan dapat dialokasikan oleh cache sebagai fragmentasi dalam slab.
Overhead memori
Overhead memori adalah memori yang digunakan oleh proses Memcached. Jumlah ini tidak mencakup item yang disimpan dalam memori untuk penyiapan cache.
Overhead memori diskalakan berdasarkan jumlah koneksi aktif, total item, dan ukuran item. Selain itu, overhead memori secara teoretis tidak terbatas, sehingga berpotensi tumbuh tanpa batas.
Untuk memperhitungkan overhead memori, Memorystore menambahkan memori ekstra ke instance Anda. Namun, jumlah memori tambahan yang kami tambahkan tidak terlihat oleh Anda. Untuk sebagian besar workload, overhead memori tidak akan menjadi masalah.
Tanpa konfigurasi apa pun, memori node Memorystore for Memcached yang kosong akan terlihat seperti diagram di bawah.

Saat aplikasi Anda menambahkan item ke cache, Memcached mengakumulasi overhead untuk proses seperti buffer koneksi dan tabel hash internal:

Karena pertumbuhan overhead tidak terbatas, beberapa overhead untuk beberapa beban kerja tumbuh melampaui batas yang dicadangkan, seperti yang terlihat di bawah:

Jika overhead dan item mengisi semua ruang yang tersedia, Memcached akan kehabisan memori dan proses harus dihentikan oleh OS sehingga menyebabkan penghapusan cache penuh:

Anda mungkin mengamati bahwa overhead memori tumbuh melampaui ruang tambahan yang dialokasikan Memorystore untuk overhead secara default (seperti yang ditunjukkan oleh Penggunaan Memori Sistem yang tinggi). Dalam situasi ini, tingkatkan parameter Memori yang Dicadangkan untuk membuat overhead tambahan bagi beban kerja Anda.
Memori yang Dicadangkan
Reserved Memory adalah konfigurasi Memorystore yang memungkinkan Anda meningkatkan jumlah ruang yang tersedia untuk digunakan oleh overhead memori.
Untuk meningkatkan memori yang tersedia untuk overhead memori, Anda meningkatkan Memori yang Dicadangkan, yang mengurangi memori cache yang tersedia. Anda harus menambahkan ruang ekstra ini jika instance Anda mengalami tekanan memori yang disebabkan oleh overhead memori yang tinggi.
Instance yang dibuat setelah 25 Oktober 2021 memiliki persentase Memori yang Dicadangkan default sebesar 10%. Nilai ini dapat diganti dengan memperbarui konfigurasi secara manual di instance Anda. Mengurangi Memori yang Dicadangkan pada instance Anda dapat meningkatkan kemungkinan kondisi OOM secara signifikan.
Diagram di bawah menunjukkan instance yang telah membuat ruang tambahan untuk overhead memori dengan meningkatkan Memori yang Dicadangkan:

Setelah cache Memcached mencapai batas yang dikurangi ini, cache akan mulai mengeluarkan item.

Setelah mulai menggunakan instance, bergantung pada metrik Penggunaan Memori Sistem, Anda mungkin perlu meningkatkan Memori yang Dicadangkan di instance untuk mendukung workload puncak.
Untuk mengetahui detail selengkapnya, lihat Mengelola penggunaan memori sistem.
Penggunaan Memori Sistem
Memori sistem sama dengan kapasitas instance yang disediakan ditambah ruang tambahan yang ditambahkan Memorystore untuk overhead memori.
Penggunaan Memori Sistem adalah metrik yang menunjukkan persentase semua memori yang digunakan (item yang disimpan ditambah overhead memori) dibandingkan dengan memori sistem. Metrik ini penting untuk dipantau, karena menunjukkan seberapa dekat Anda dengan pengisian penuh memori sistem yang tersedia untuk instance Anda. Saat metrik Penggunaan Memori Sistem mendekati 100%, instance lebih cenderung mengalami kondisi OOM. Untuk memastikan instance memiliki memori yang cukup untuk mendukung workload Anda, penting untuk selalu menyediakan memori sistem yang cukup.
Untuk workload yang mencoba mengisi seluruh cache dan mengandalkan penghapusan Memcached untuk mengelola item yang disimpan, Anda akan melihat Penggunaan Memori Sistem yang lebih tinggi, dan sebaiknya meningkatkan Memori yang Dicadangkan secara preventif untuk menjamin bahwa Anda memiliki ruang yang cukup untuk overhead.
Peringatan untuk Penggunaan Memori Sistem
Anda harus menyetel pemberitahuan untuk memberi tahu Anda jika metrik Penggunaan Memori Sistem melebihi 90%. Jika Penggunaan Memori Sistem tinggi, Anda harus melanjutkan untuk memantau metrik Penggunaan Memori Sistem secara lebih cermat, dan jika meningkat secara signifikan, Anda harus mempertimbangkan untuk mengambil langkah-langkah untuk mengelola penggunaan memori sistem. Tindakan yang diambil saat Penggunaan Memori Sistem mencapai tingkat tinggi sangat penting karena memberi Anda waktu untuk melakukan mitigasi, bukan menangani penghapusan cache yang disebabkan oleh kondisi OOM.
Kebijakan pengusiran
Memcached menggunakan algoritma LRU yang dioptimalkan untuk mengeluarkan item setelah item tersebut mengisi memori cache. Untuk mengetahui petunjuk tentang cara menonaktifkan penghapusan entri cache, lihat Mengonfigurasi instance Memcached.
Pemantauan pengusiran menunjukkan jumlah kunci yang dihapus Memcached karena batasan ukuran. Item yang dihapus karena masa berlaku TTL berakhir tidak disertakan dalam metrik ini. Jika Anda melihat sejumlah besar penghapusan, menskalakan instance Anda dapat meningkatkan rasio hit cache.
Jika pengusiran tidak diaktifkan, dan cache Anda penuh, menyetel item di server Memcached Anda mungkin gagal.
Rasio cache ditemukan
Anda harus memantau metrik rasio cache yang ditemukan secara rutin agar Anda mengetahui persentase pencarian kunci yang berhasil ditampilkan oleh kunci di instance Memcached Anda. Secara umum, rasio cache ditemukan yang lebih tinggi lebih baik daripada rasio cache ditemukan yang lebih rendah karena berarti cache Anda menampilkan lebih banyak permintaan cache.
Anda harus mencatat rasio hit cache sebelum melakukan perubahan konfigurasi besar seperti menyesuaikan Memori yang Dicadangkan, menyesuaikan TTL kunci, atau menskalakan instance. Kemudian, setelah Anda mengubah instance, periksa rasio hit cache lagi untuk melihat pengaruh perubahan Anda terhadap metrik ini.
Memantau penggunaan memori instance
Metrik berikut memberi Anda insight tentang penggunaan memori instance Anda. Untuk mempelajari cara melihat metrik dan menyetel pemberitahuan, lihat Memantau instance Memcached.
Metrik terkait pengelolaan memori
| Metrik | Alamat metrik lengkap |
|---|---|
| Memori Cache | memcache.googleapis.com/node/cache_memory |
| Penggunaan Memori Sistem | memcache.googleapis.com/node/memory/utilization |
| Rasio Cache ditemukan | memcache.googleapis.com/node/hit_ratio |
| Penggusuran | memcache.googleapis.com/node/eviction_count |
Mengelola penggunaan memori sistem
Jika instance Anda mengalami tekanan memori atau mengalami error OOM, ikuti langkah-langkah di bawah untuk menyelesaikan masalah:
- Verifikasi kondisi kehabisan memori (OOM).
- Tingkatkan Memori yang Dicadangkan di instance Anda.
- Naikkan skala instance.
- Menetapkan TTL pada kunci yang tidak stabil.
- Menghapus kunci secara manual di instance Anda.
- Jika Anda masih mengalami kondisi OOM, hubungi Dukungan Google Cloud Platform.
Memverifikasi kondisi OOM
Saat instance Anda mencapai kondisi OOM, sinyal pertama adalah mulai ulang instance. Untuk melihat apakah mulai ulang disebabkan oleh kondisi OOM, lihat Uptime dan Pemakaian Memori Sistem metrik.
Jika Penggunaan Memori Sistem lebih dari 90% sebelum Waktu Aktif turun menjadi nol, hal ini berarti bahwa mulai ulang instance kemungkinan disebabkan oleh kondisi OOM.
Meningkatkan Memori yang Dicadangkan
Meningkatkan Memori yang Dicadangkan akan menciptakan lebih banyak ruang untuk overhead memori. Hal ini dilakukan dengan mengurangi batas Memori Cache instance Anda. Anda harus meningkatkan Memori yang Dicadangkan jika metrik Penggunaan Memori Sistem melebihi 90%.
Untuk mengetahui petunjuk tentang cara menyesuaikan konfigurasi Reserved Memory, lihat Mengonfigurasi instance Memcached
Meningkatkan Memori yang Dicadangkan akan mengurangi memori yang tersedia untuk menyimpan item, sehingga item dikeluarkan lebih cepat. Hal ini dapat menurunkan rasio hit cache instance Anda. Item tidak dikeluarkan jika Anda menonaktifkan pengeluaran.
Menskalakan instance
Ikuti petunjuk di Menskalakan instance Memcached untuk menambah jumlah node. Jika aplikasi Anda dikonfigurasi untuk membagi kunci di seluruh node, hal ini akan meningkatkan ruang penyimpanan item keseluruhan yang tersedia untuk aplikasi Anda dan mengurangi jumlah kunci yang disimpan di setiap node.
Menetapkan TTL pada kunci yang tidak stabil
Konfigurasi aplikasi Anda untuk menetapkan TTL pada kunci yang disimpan di Memcached. Secara default, Memcached secara berkala memeriksa kunci yang sudah tidak berlaku dan menghapusnya, sehingga mengosongkan ruang di server Anda dan mencegah alokasi memori cache lebih lanjut.
Menghapus kunci secara manual di instance Anda
Anda harus mempertimbangkan untuk menghapus kunci saat menghadapi tekanan memori. Namun, karena Memcached open source tidak membebaskan memori yang dialokasikan sebelumnya, menghapus kunci hanya mengurangi kemungkinan memasuki kondisi OOM. Hal ini mengurangi peluang karena penulisan baru menggunakan memori kosong. Overhead memori yang terus bertambah masih dapat menyebabkan kondisi OOM karena memori yang dialokasikan sebelumnya dikhususkan untuk menyimpan item, dan tidak dapat digunakan oleh overhead.