Magento Caching Insight Otomatis

16

Kami menjalankan Magento EE 1.11 dengan memcache. 2GB per server memcahce, total 4GB. Kami memiliki sekitar 240 ribu produk.

  • Ram yang tersedia: 6GB
  • Cores: 16
  • Thread: 32

Inilah kesepakatannya, lebih banyak produk baru ditambahkan dan perubahan pada produk terjadi setiap hari dan tentu saja setiap kali produk baru ditambahkan / dimodifikasi di bagian belakang cache menjadi tidak valid, khususnya 'Cache Halaman Penuh'.

Ketika Magentos Auto Cache Generation diaktifkan, dibutuhkan sekitar 2 hari untuk membangun cache, dengan 8 utas dialokasikan untuk crawler. Setelah 2 hari memcache melayang sekitar ~ 2GB dipisahkan antara dua ram disk.

Masalahnya adalah, ketika produk dimodifikasi setiap hari, cache menjadi tidak valid dan segera setelah 'Cache Halaman Penuh' di-refresh, cache 2GB itu kembali ke titik awal, 0, dan siklus kental cache Magentos Auto dimulai lagi. Sekarang, cache tidak hanya kembali ke 0, tetapi penggunaan CPU melonjak hingga 90% dan situs web berubah menjadi permainan menunggu 5-10 + detik dan Anda bisa saja lupa untuk mencoba meminta produk dengan 100+ variasi, jika itu tidak di-cache akan butuh beberapa menit untuk memuat pertama kali, itu konyol.

Jadi, pertanyaan saya kepada komunitas.

  • Apakah ada cara bagi Magento untuk secara otomatis "memperbarui" cache jika tidak valid, tanpa membangun kembali seluruh cache dan mulai dari 0? Saya tahu kapan cache tidak valid bahwa Magento tahu sesuatu telah berubah, tetapi tidak persis di mana dalam cache (koreksi saya jika saya salah). Apakah ada modul / konfigurasi di luar sana untuk memotong membangun kembali seluruh cache?

Sebagai catatan, kami menggunakan modul Tiny Bricks LightSpeed.

  • Bisakah Magentos Automatic Cache Generation dikontrol waktu dengan cronjob? Katakan, untuk mulai merangkak pada jam 10 malam - 6 pagi.

  • Apa yang akan menjadi cara terbaik untuk mendekati situasi ini ?, Ketika Anda memahami membangun kembali cache yang dalam gigabytes setiap hari tidak dapat diterima.

Oleg
sumber
1
Saya merasa sangat konyol sekarang saya seharusnya memposting rincian lebih lanjut tentang server. Saya baru saja diperkenalkan ke pengaturan server ketika saya mengajukan pertanyaan. Tapi di sini adalah pengaturan yang sebenarnya: 2 server, identik. Satu menjalankan Apache satu MySQL, keduanya dengan ram 64GB duduk di 2x AMD Opteron 6276 CPU dengan 32 core, 32 thread. Setelah banyak, banyak membaca saya menggali konfigurasi server dan menyadari banyak hal yang salah konfigurasi, terutama cache Magentos. Mereka memiliki setup 2GB APC sebagai backend dan 4GB memcache untuk backend lambat pada konfigurasi 1 +1 dan banyak konfigurasi aneh lainnya.
Oleg
Mungkin karena ketika beralih ke EE ukuran katalog jauh lebih kecil, tidak yakin. Plus, saya masih tidak yakin bagaimana pengaturan sql server karena saya belum meminta akses. Jadi saya yakin itu teka-teki lain. Saya hanya ingin mengucapkan terima kasih, Sonassi, yang telah meluangkan waktu untuk menjawab dan memberikan bukti wawasan / petunjuk, setiap bit membantu!
Oleg
Bagi mereka yang menemukan utas ini di sini adalah tautan yang sangat berguna untuk mengatur cache Magentos : magebase.com/magento-tutorials/improving-the-file-cache-backend dan terutama *** -> nbs-system.co.uk/ blog-2 / magento-optimasi-howto-en.html plus pastikan untuk membaca Magento Wiki dan Magento White Pages.
Oleg

Jawaban:

14

RAM Anda hampir tidak cukup

Kami memiliki sekitar 240k produk
Ram yang tersedia: 6GB
Thread: 32

Anda hampir tidak memiliki RAM yang cukup untuk jumlah produk yang Anda miliki. Sebagai patokan, kami sarankan setidaknya 2-4GB RAM per core logis.

Jika Anda memetakan kemungkinan penggunaan memori Anda:

  • 64 Thread PHP dengan max_memory~ 768MB = 24GB
  • 240.000 Produk kemungkinan akan berarti sekitar 15GB ruang meja InnoDB
  • 64 PHP Threads akan menjamin sekitar 128 koneksi MySQL, biasanya ini dikenakan biaya sekitar 200MB per koneksi minimum
  • Penyimpanan backend untuk 240.000 produk di Redis DAN lzfterkompresi - masih akan mengkonsumsi sekitar 6GB RAM

Jadi total sejauh ini adalah 70GB RAM yang berkomitmen - kami bahkan belum menyebutkan OS dll.

Perangkat keras Anda sangat tidak ditentukan . Saya sarankan membaca lebih dari server Magento ini mengatur artikel untuk sedikit merasakan tentang bagaimana untuk maju.

Memcached tidak mendukung tag cache

Jika Anda menggunakan Memcached (bukan masalah, kinerjanya sangat tinggi), maka Anda menyimpan tag cache atau tidak. Jika Anda tidak memiliki yang slow_backendditentukan - maka Anda tidak menyimpan tag, yang pada dasarnya berarti cache Anda tidak dapat membedakan antara jenis cache yang berbeda - sehingga Anda tidak akan dapat membilasnya secara independen.

Bacalah ini, http://www.sonassi.com/knowledge-base/magento-kb/what-is-memcache-actually-caching-in-magento/

Kami sangat menyarankan untuk beralih ke Redis. Ini memiliki kebiasaan dan memang perlu fine-tuning yang signifikan untuk toko yang lebih besar. Tetapi secara keseluruhan akan melakukan sedikit lebih baik daripada Memcached dengan manfaat nyata dari dukungan cache-tag.

404 dan FPC

FPC memiliki masalah nyata, pada kenyataannya, semua mesin caching memiliki masalah dengan 404s. Alasannya, setiap URL lama yang masih dirayapi atau ditautkan akan mendarat di halaman yang harus diulangi di seluruh core_url_rewritetabel, coba dan temukan kecocokan dengan semua router dan ruang nama yang ditentukan sebelum akhirnya menyerah dan memuat 404.

Kemudian caching sumber daya yang tidak memiliki nilai dan akan mengkonsumsi ruang dalam penyimpanan cache Anda. Anda mungkin akan menemukan sebagian besar penyimpanan Memcached Anda sebenarnya sedang dimakan oleh 404 konten.

Dengan katalog besar (produk 240k), Anda pasti akan mendapatkan bagian yang adil dari pergantian produk, dan dengan demikian, perubahan dalam URL dan selanjutnya, banyak 404.

FPC Tidak Valid vs Bersih

Saat ini - dan secara default - perilaku FPC adalah untuk membersihkan cache pada perubahan, bukan hanya membatalkan entri cache. Kami menulis ekstensi untuk mengubah perilaku ini agar toko EE melakukan apa yang Anda inginkan.

Berikut ini tambalan cepat untuk memberi Anda gagasan tentang bagaimana menyelesaikan masalah Anda.

app/code/core/Enterprise/PageCache/etc/config.xml
index 6a56a80..85ebc92 100644
--- app/code/core/Enterprise/PageCache/etc/config.xml
+++ app/code/core/Enterprise/PageCache/etc/config.xml
@@ -139,7 +139,7 @@
             <observers>
                 <enterprise_pagecache>
                     <class>enterprise_pagecache/observer</class>
-                    <method>cleanCache</method>
+                    <method>invalidateCache</method>
                 </enterprise_pagecache>
             </observers>
         </catalogrule_after_apply>

Jangan jalankan crawler

Jika Anda memiliki cukup langkah kaki - kami tidak menyarankan menjalankan alat merangkak, itu menghasilkan beban yang tidak perlu. Orang / bot / perayap yang menjelajahi situs harus menjaga agar cache tetap prima.

Tetapi untuk menjawab pertanyaan Anda, jika Anda melihat file konfigurasi yang disebutkan di atas - Anda melihat jadwal cron yang telah ditentukan untuk jendela penelusuran perayapan.

Jika Anda mampu membeli konten basi

Dan akhirnya, jika Anda memiliki RAM yang cukup . Anda bisa mendapat manfaat dari peningkatan TTL konten yang disimpan di FPC - untuk menjaga data cache Anda lebih lama.

Di <full_page_cache>tag di Anda ./app/etc/local.xmlhanya mendefinisikan

<lifetimelimit>86400</lifetimelimit>

Masa hidup ditentukan dalam hitungan detik. Anda perlu menemukan keseimbangan antara kesegaran konten, kinerja, dan jumlah ruang penyimpanan yang sebenarnya Anda miliki.

Mengapa Anda menggunakan ekstensi caching pihak ke-3 dengan EE

Anda membayar premi untuk FPC - yang membuat saya sedih mengatakan, itu sangat bagus. Jadi mengapa Anda menjalankan alternatif pihak ketiga di atas. Singkirkan.

Begini. Jika mobil Anda berjalan buruk - apakah Anda hanya menambahkan mesin lain di boot untuk mengimbangi; atau hanya memperbaiki mesin yang sudah ada di sana?

Ben Lessani - Sonassi
sumber
-1

Kami memahami Anda dengan sangat baik! Kami menambahkan baru atau mengubah produk kami setiap hari dan memodifikasi blok statis juga. Jadi kami penuh dengan cache Magento yang tidak valid dan terus-menerus ini menuju Sistem -> Manajemen Cache. Kami benci perlunya menyegarkan jenis cache yang tidak valid secara manual.

Lalu kami memasang ekstensi Magento Optimizer baru . Modul ini mengotomatiskan proses ini. Ini menyegarkan tidak valid / semua jenis cache atau flushes penyimpanan cache Magento pada frekuensi yang ditentukan. Itu sangat melegakan bagi semua tim kami!

Satu lagi fitur hebat dari ekstensi ini adalah ia membersihkan file sesi dan laporan kesalahan yang lebih lama dari X hari. Semua orang tahu bahwa ukuran direktori var / session dan var / report dapat tumbuh menjadi gigabytes dan jumlah file-file ini dapat melebihi ratusan. Jadi sekarang untuk memperlambat kinerja situs web, kami menetapkan Magento Optimizer sekali dan lupa tentang penyegaran direktori ini secara berkala.

Magento dikenal karena menggabungkan keranjang yang ditinggalkan dengan yang saat ini ketika pelanggan mencoba untuk masuk. Dari sudut pandang pengalaman dan loyalitas pelanggan, ini sangat destruktif. Modul Magento Optimizer secara otomatis menghapus gerobak yang ditinggalkan lebih lama dari X hari. Anda juga dapat menggunakan fitur ini pada waktu penjualan dan membatasi waktu untuk gerobak yang ditinggalkan.

James
sumber
1
James apakah Anda memiliki koneksi dengan modul ini? Anda tampak antusias tentang hal itu.
parhamr