Kami telah mempelajari banyak forum dan tidak tahu jawabannya. Kami memiliki kedua APC
dan Memcache
diinstal di server kami. Kami tidak yakin apa konfigurasi yang benar dan terbaik.
Pertanyaan saya
Apa pengaturan terbaik untuk menjalankan Magento menggunakan Memcache + APC secara bersamaan? (Atau apakah ini sama sekali tidak pintar)
Penelitian latar belakang
Di sini, Memcache dan APC disarankan sebagai cache cepat dan lambat (tetapi tidak ada disk). Kedengarannya seperti ini hanya berfungsi ketika Anda memiliki cukup RAM (dan yakin tentang itu)
Dan artikel ini tentang Memcache atau APC - dan kami memiliki keduanya
Dan di sini disebutkan bahwa Memcache hanya benar-benar berfungsi ketika Anda juga memiliki backend lambat yang didefinisikan
Dan saya pikir artikel ini mengatakan hal yang sama
Ini adalah solusi ISP saya untuk local.xml
<cache>
<backend>apc</backend>
<prefix>sitenamehere__</prefix>
</cache>
<cache>
<backend>memcached</backend>
<memcached>
<servers>
<server>
<host><![CDATA[127.0.0.1]]></host>
<port><![CDATA[11211]]></port>
<persistent><![CDATA[1]]></persistent>
</server>
</servers>
<compression><![CDATA[0]]></compression>
<cache_dir><![CDATA[]]></cache_dir>
<hashed_directory_level><![CDATA[]]></hashed_directory_level>
<hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
<file_name_prefix><![CDATA[]]></file_name_prefix>
</memcached>
</cache>
Situasi
Hosting bersama Brim FPC terinstal: http://ecommerce.brimllc.com/full-page-cache-magento.html (FPC ini juga memiliki cache file yang dapat diukur untuk membuatnya lebih kompleks)
Jawaban:
Anda perlu memahami perbedaan yang jelas antara kedua produk ini untuk memahami cara menggunakannya.
Menggunakan APC sebagai OPCode Cache
Cukup instal modul di server Anda
Dan aktifkan di
php.ini
Anda kemudian mengaktifkan dan menyempurnakan konfigurasi runtime yang sesuai, misalnya.
Kemudian restart PHP / Apache
Setelah itu, tidak ada lagi yang bisa dilakukan. Konfirmasikan APC diaktifkan dengan cepat
phpinfo()
- tetapi sebaliknya, pada titik ini, bagian cache OPCode dari APC aktif.Tidak ada yang perlu dikonfigurasi di sisi Magento.
Menggunakan APC sebagai Backend Cepat
Anda perlu menambahkan yang berikut ke
./app/etc/local.xml
Lalu siram cache toko yang ada. Untuk memverifikasi itu berfungsi, muat halaman di front-end dan
./var/cache
direktori harus tetap kosong.Menggunakan Memcache sebagai Backend Cepat
Anda harus menginstal Memcache sebagai ekstensi PHP, dan menginstal Memcache Daemon masing-masing (Memcached) di server Anda.
Dan aktifkan di php.ini Anda
Kemudian instal Memcached di server. Untuk RH / Centos, sesuaikan URL agar sesuai dengan versi rilis dan arsitektur CPU Anda.
Kemudian modifikasi Magento untuk menggunakan Memcache sebagai backend cepat, ubah jalur soket ke koneksi TCP / IP yang sesuai.
Peringatan Memcache dan penandaan - apa yang disimpannya
Memcache hanya mendukung satu tingkat hubungan nilai kunci, sehingga tidak dapat menyimpan tag cache Magento (yang digunakan untuk menyiram data cache secara independen). Akibatnya, Anda harus menentukan a
slow_backend
untuk mempertahankan hubungan tag konten cache, atau tidak mendefinisikannya sama sekali.Jika Anda mendefinisikan a
slow_backend
, Anda menjalankan risiko tag cache semakin besar sehingga kinerja dinegasikan; ada juga masalah inheren yang Anda tidak dapat skala di beberapa server jika setiap server mempertahankan tag cache mereka sendiri.Jadi ketika menggunakan Memcache, pendekatan yang lebih baik (dengan peringatan Anda tidak dapat membersihkan cache secara mandiri), adalah tidak repot menggunakan
slow_backend
.Dalam hal ini, kami sarankan menghapus
<slow_backend>database</slow_backend>
dan menggantinya dengan:Ini akan merusak / menonaktifkan level 2 caching (dan mencegah penyimpanan tag), tetapi masih memungkinkan kinerja Memcache.
Yang digunakan
Jika ini adalah penyebaran server tunggal - tidak ada salahnya hanya menggunakan APC untuk semuanya.
Jika ini adalah set-up terdistribusi - maka Anda harus menggunakan Memcache sebagai backend cepat (sehingga semua mesin dapat mengakses toko umum).
Yang lebih memprihatinkan adalah bahwa jika penyedia hosting Anda tidak dapat memberi tahu Anda pengaturan yang tepat untuk digunakan, Anda tentu saja dengan host yang salah.
Atribut: sonassi.com , php.net , repoforge.org
sumber
slow_backend must implement the Zend_Cache_Backend_ExtendedInterface interface
Mage 1.7.0.2Saya cukup setuju dengan jawaban sebelumnya, tapi inilah ketepatan yang singkat untuk melengkapinya: Ya, apc dapat digunakan sebagai mesin penyimpan cache dan sebagai pengoptimal kode byte PHP. Tetapi dua poin perlu diklarifikasi:
Sebagai backend cepat, arahan konfigurasi yang digunakan oleh APC untuk memahami bagaimana ia harus menyimpan data dikelola melalui arahan apc.user_%. Yang lain hanya menyangkut cache kode byte (Ex apc.ttl: durasi kedaluwarsa untuk cache opcode, apc.user_ttl: durasi kedaluwarsa untuk data yang disimpan dalam cache oleh Magento Anda).
Dan sebagai backend cepat, APC memiliki perilaku yang sama persis dengan memcached: APC tidak mengelola tag cache, dan untuk Magento memerlukan backend yang dikonfigurasi (atau digunakan secara default file backend lambat).
Dari pengalaman saya, di situs web dengan lalu lintas besar, jika Anda menggunakan apc sebagai pengoptimal kode byte saja, Anda memerlukan antara 96 dan 256Mo dalam nilai konfigurasi apc.shm_size. Juga tingkatkan apc.num_files_hint dari 1000 menjadi 15000: secara default kode byte cache cache hanya 1000 file dan Magento berisi sekitar ~ 20.000 file PHP dan PHTML secara default (
find . -type f -name "*.php" -o -name "*.phtml" | wc -l
). Jadi sesuaikan nilai ini dengan kode sumber Anda.Jika Anda menggunakan APC atau memcached sebagai backend cepat, sulit untuk memberikan Anda beberapa tips tentang memori yang diperlukan: itu benar-benar tergantung pada kebijakan cache yang diterapkan pada instance Anda.
Untuk saat ini, konfigurasi cache Anda berfungsi seperti ini:
Mengapa manajemen dua level ini? memcached dan backend cepat lainnya adalah penyimpanan memori. Jadi itu berarti bahwa data dapat rusak atau hilang.
Bagaimana Anda dapat meningkatkan kinerja konfigurasi ini?
Nonaktifkan penulisan kedua mungkin salah satu opsi paling efisien. Ini dijelaskan dalam artikel keempat yang Anda sebutkan. Tetapi Anda tidak dapat menggunakan tanpa modifikasi kode sumber slow_backend_store_data. Dalam konteks Anda, saya tidak merekomendasikan untuk membuat penyesuaian ini karena alasan berikut: data Anda yang disimpan dalam cache tidak akan pernah dapat dikendalikan. Anda akan menyimpan data dalam memori, akan menghasilkan kinerja, tetapi mungkin mengirimkan konten yang tidak valid kepada pengunjung Anda. Jadi, Anda perlu menemukan solusi yang memastikan Anda memiliki akses memori (untuk kinerja yang lebih baik), kontrol tulis, dan kemampuan untuk menonaktifkan caching slow_backend_store_data. Anda dapat mencapai konteks ini dengan:
ganti memcached server dengan redis (redis dapat mengontrol baca dan tulis seperti dilakukan oleh sistem file), dan terus menggunakan apc sebagai pengoptimal kode byte
* memastikan bahwa Anda dapat menggunakan opsi slow_backend_store_data * baik dengan menyesuaikan kode sumber Anda atau dengan beralih ke database lambat backend (ya itu meningkatkan beban server database Anda, tetapi jika kebijakan cache Anda didefinisikan dengan baik, itu tidak boleh masalah)
* Nonaktifkan opsi slow_backend_store_data * : dalam konfigurasi ini tidak diperlukan lagi, Anda telah membaca dan menulis kontrol yang dilakukan oleh redis.
sumber
Sebagai catatan tambahan untuk ini, kami telah menemukan bahwa ketika menggunakan APC dengan Magento (untuk caching opcode - kami menggunakan Redis untuk halaman Magento konvensional dan memblokir caching) maka penting untuk memastikan bahwa pengaturan stat adalah 0 dalam produksi (tetapi 1 dalam pengembangan):
Pengaturan apc.stat digunakan untuk menentukan apakah akan memeriksa skrip pada setiap permintaan untuk menentukan apakah skrip itu telah dimodifikasi ( http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat ) dan pengaturan ini ke 0 dalam lingkungan produksi akan membawa manfaat kinerja APC tidak melakukan pemeriksaan ini dengan setiap permintaan.
Patut dicatat bahwa sekali apc.stat diatur ke 0, Anda kemungkinan harus memulai kembali proses server web Anda untuk mengambil perubahan file (mis. Pasca penempatan) tetapi ini harus tetap menjadi bagian dari strategi pasca penempatan Anda.
sumber
Hal terbaik yang kami lakukan untuk mempercepat backend secara signifikan adalah menginstal REDIS sebagai penangan cache . Sekarang juga didukung pada inti dari Magento 1.8 dan lebih tinggi.
Tidak ada yang membandingkan ... sekarang klik klik klik clickerdy
http://www.magentocommerce.com/knowledge-base/entry/redis-magento-ce-ee
Selain itu Anda dapat mempertimbangkan untuk menambahkan ekstensi Sesi Redis untuk juga menambahkan sesi ke server memori redis ...
Semoga berhasil!
sumber
Dari file local.xml ini, Magento akan mengambil entri terakhir dan menggunakan Memcache. Saya pikir ada kebingungan antara bagaimana APC dan Memcache dapat bekerja dengan Magento.
Pertama, APC memiliki 2 kegunaan:
Memcache di sisi lain hanyalah toko kunci / nilai. Keuntungan besar dari Memcache adalah dapat bekerja dalam mode client-server, jadi beberapa server frontend dapat menggunakan cache yang sama, yang merupakan keharusan jika Anda memiliki beberapa server yang melayani situs web yang sama.
Setup yang paling umum adalah menginstal APC untuk mendapatkan caching opcode (sehingga Anda mendapatkan ~ 25% eksekusi skrip lebih cepat) dan menggunakan Memcache sebagai server cache. Saya juga menggunakan APC sebagai sistem cache dan meskipun secara teori seharusnya sedikit lebih cepat daripada Memcache, Anda tidak dapat membedakannya.
sumber