Halaman ini menjelaskan konfigurasi Memori yang Dicadangkan untuk instance Memcached Anda, dan kapan harus Meningkatkan Memori yang Dicadangkan jika diperlukan. Halaman ini juga menjelaskan praktik terbaik lainnya yang perlu Anda ketahui untuk 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 ekstra yang kami sediakan untuk tujuan ini.
Jika penggunaan memori bertambah lebih besar daripada total memori sistem Memorystore Anda, kondisi kehabisan memori (OOM) dapat menyebabkan pengosongan cache data secara penuh, yang dapat mengganggu aplikasi dan bisnis Anda.
Bagian berikut menguraikan prinsip umum yang harus diikuti saat mengonfigurasi instance Memorystore for Memcached. Bagian ini juga membahas metrik dan pemberitahuan yang dapat Anda gunakan untuk memantau memori, dan juga menjelaskan tindakan yang dapat Anda lakukan.
Konsep pengelolaan memori
Kapasitas instance
Kapasitas instance adalah jumlah memori yang Anda sediakan dalam GiB, dan yang ditagih 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 sebesar 5 GiB untuk menyimpan item.
Batas memori cache
Memori cache adalah total ukuran 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 akan 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 caching.
Overhead memori diskalakan berdasarkan jumlah koneksi aktif, total item, dan ukuran item. Selain itu, overhead memori secara teoretis tidak dibatasi, sehingga berpotensi bertambah tanpa batas.
Untuk memperhitungkan overhead memori, Memorystore menambahkan memori ekstra ke instance Anda. Namun, jumlah memori ekstra yang kami tambahkan tidak terlihat oleh Anda. Untuk sebagian besar workload, overhead memori seharusnya tidak 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 akan mengakumulasi overhead untuk proses seperti buffer koneksi dan tabel hash internal:

Karena pertumbuhan overhead tidak dibatasi, beberapa overhead untuk beberapa workload tumbuh melebihi batas yang dicadangkan, seperti yang terlihat di bawah:

Saat overhead dan item mengisi semua ruang yang tersedia, Memcached akan kehabisan memori dan proses harus dihentikan oleh OS yang menyebabkan pengosongan cache secara penuh:

Anda mungkin mengamati bahwa overhead memori bertambah melebihi ruang ekstra 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 ekstra untuk workload Anda.
Memori yang Dicadangkan
Memori yang Dicadangkan 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. Menurunkan Memori yang Dicadangkan di instance Anda dapat meningkatkan kemungkinan kondisi OOM secara signifikan.
Diagram di bawah menunjukkan instance yang telah membuat ruang ekstra untuk overhead memori dengan meningkatkan Memori yang Dicadangkan:

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

Setelah Anda mulai menggunakan instance, bergantung pada metrik Penggunaan Memori Sistem, Anda mungkin harus meningkatkan Memori yang Dicadangkan di instance Anda untuk mendukung workload puncak Anda.
Untuk mengetahui detail selengkapnya, lihat Mengelola penggunaan memori sistem.
Penggunaan Memori Sistem
Memori sistem sama dengan kapasitas instance yang Anda sediakan 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 metrik ini menunjukkan seberapa dekat Anda dengan mengisi memori sistem yang tersedia untuk instance Anda sepenuhnya. 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 memiliki memori sistem yang cukup.
Untuk workload yang mencoba mengisi cache sepenuhnya dan mengandalkan pengeluaran Memcached untuk mengelola item yang disimpan, Anda harus mengharapkan Penggunaan Memori Sistem yang lebih tinggi, dan Anda mungkin ingin secara proaktif meningkatkan Memori yang Dicadangkan untuk menjamin bahwa Anda memiliki ruang yang cukup untuk overhead.
Pemberitahuan untuk Penggunaan Memori Sistem
Anda harus menetapkan 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 lebih cermat, dan jika meningkat secara signifikan, Anda harus mempertimbangkan untuk mengambil langkah-langkah untuk mengelola penggunaan memori sistem. Mengambil tindakan saat Penggunaan Memori Sistem mencapai tingkat yang tinggi penting karena memberi Anda waktu untuk melakukan mitigasi, bukan menangani pengosongan cache yang disebabkan oleh kondisi OOM.
Kebijakan pengeluaran
Memcached menggunakan algoritma LRU yang dioptimalkan untuk mengeluarkan item setelah item tersebut mengisi memori cache. Untuk mengetahui petunjuk tentang cara menonaktifkan pengeluaran cache, lihat Mengonfigurasi instance Memcached.
Pemantauan pengeluaran menunjukkan jumlah kunci yang dihapus Memcached karena batasan ukuran. Item yang dihapus karena masa berlaku TTL tidak disertakan dalam metrik ini. Jika Anda melihat sejumlah besar pengeluaran, meningkatkan skala instance Anda dapat meningkatkan rasio cache ditemukan.
Jika pengeluaran tidak diaktifkan, dan cache Anda sudah penuh, menetapkan item di server Memcached Anda mungkin akan gagal.
Rasio cache ditemukan
Anda harus memantau metrik rasio cache 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 cache ditemukan sebelum melakukan perubahan konfigurasi besar seperti menyesuaikan Memori yang Dicadangkan, menyesuaikan TTL kunci, atau meningkatkan skala instance Anda. Kemudian, setelah Anda mengubah instance, periksa kembali rasio cache ditemukan untuk melihat pengaruh perubahan Anda terhadap metrik ini.
Memantau penggunaan memori instance Anda
Metrik berikut memberi Anda insight tentang penggunaan memori instance Anda. Untuk mempelajari cara melihat metrik dan menetapkan 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 |
| Pengeluaran | 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 mengatasi masalah ini:
- Verifikasi kondisi OOM.
- Tingkatkan Memori yang Dicadangkan di instance Anda.
- Tingkatkan skala instance.
- Tetapkan TTL pada kunci yang mudah berubah.
- Hapus 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 memulai ulang instance. Untuk melihat apakah memulai ulang disebabkan oleh kondisi OOM, lihat Waktu Aktif dan Penggunaan Memori Sistem metrik.
Jika Penggunaan Memori Sistem lebih dari 90% sebelum Waktu Aktif turun menjadi nol, berarti memulai ulang instance kemungkinan disebabkan oleh kondisi OOM.
Meningkatkan Memori yang Dicadangkan
Meningkatkan Memori yang Dicadangkan akan membuat lebih banyak ruang untuk overhead memori. Tindakan 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 Memori yang Dicadangkan, lihat Mengonfigurasi instance Memcached
Meningkatkan Memori yang Dicadangkan akan mengurangi memori yang tersedia untuk menyimpan item, sehingga pengeluaran item terjadi lebih cepat. Hal ini dapat menurunkan rasio cache ditemukan instance Anda. Item tidak akan dikeluarkan jika Anda menonaktifkan pengeluaran.
Meningkatkan skala instance
Ikuti petunjuk di Meningkatkan skala instance Memcached untuk meningkatkan jumlah node Anda. 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 mudah berubah
Konfigurasikan aplikasi Anda untuk menetapkan TTL pada kunci yang disimpan di Memcached. Secara default, Memcached akan memeriksa kunci yang masa berlakunya habis secara berkala 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 mengosongkan memori yang sebelumnya dialokasikan, menghapus kunci hanya mengurangi kemungkinan memasuki kondisi OOM. Tindakan ini mengurangi kemungkinan karena penulisan baru menggunakan memori kosong. Overhead memori yang bertambah masih dapat menyebabkan kondisi OOM karena memori yang sebelumnya dialokasikan dikhususkan untuk menyimpan item, dan tidak dapat digunakan oleh overhead.