Bagaimana cara menggunakan Database sebagai slow_backend alih-alih File di Magento EE 1.12?

14

Di Magento EE 1.12.0.0 Tampaknya tidak peduli perubahan konfigurasi apa yang saya buat app/etc/local.xml, cache file default terus digunakan (yang dibuktikan dengan var/cache/selalu mengisi).

Harapan

  • Memcached digunakan sebagai fast_backend.
  • Database digunakan sebagai slow_backend.
  • Cache file tidak digunakan sama sekali (yaitu var/cache/harus selalu kosong).

Output Aktual

  • Memcached digunakan sebagai fast_backend.
  • Basis data tidak digunakan sama sekali.
  • Cache file sedang digunakan.

Prosedur Pengujian

  1. Ubah konfigurasi menjadi app/etc/local.xml.
  2. Restart Memcached dan Apache (hanya untuk ukuran yang baik dan itu ada di kotak dev lokal saya jadi saya mungkin juga).
  3. Bersihkan cache file ( rm -rf var/cache/*).
  4. Perbarui halaman beranda.
  5. Periksa isi cache file ( ls var/cache).
  6. Menjadi sedih dan kembali ke # 1 dengan perubahan konfigurasi yang berbeda.

Konfigurasi

Isi saya app/etc/local.xmladalah sebagai berikut:

<config>
    <global>
        <install>
            <date><![CDATA[{{actual_data}}]]></date>
        </install>
        <crypt>
            <key><![CDATA[{{actual_data}}]]></key>
        </crypt>
        <disable_local_modules>false</disable_local_modules>
        <resources>
            <db>
                <table_prefix><![CDATA[]]></table_prefix>
            </db>
            <default_setup>
                <connection>
                    <host><![CDATA[{{actual_data}}]]></host>
                    <username><![CDATA[{{actual_data}}]]></username>
                    <password><![CDATA[{{actual_data}}]]></password>
                    <dbname><![CDATA[{{actual_data}}]]></dbname>
                    <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                    <model><![CDATA[mysql4]]></model>
                    <type><![CDATA[pdo_mysql]]></type>
                    <pdoType><![CDATA[]]></pdoType>
                    <active>1</active>
                </connection>
            </default_setup>
        </resources>
        <session_save><![CDATA[db]]></session_save>
        <cache>memcached</cache>
        <slow_backend>database</slow_backend>
        <slow_backend_store_data>1</slow_backend_store_data>
        <memcached>
            <servers>
                <server>
                    <host><![CDATA[{{actual_data}}]]></host>
                    <port><![CDATA[{{actual_data}}]]></port>
                    <persistent><![CDATA[0]]></persistent>
                    <weight><![CDATA[2]]></weight>
                    <timeout><![CDATA[10]]></timeout>
                    <retry_interval><![CDATA[10]]></retry_interval>
                    <status><![CDATA[]]></status>
                </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>
    </global>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <frontName><![CDATA[admin]]></frontName>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>
Robr3
sumber
1
Sebagai tambahan, bacaan wajib: TwoLevels Cache Backend Mess Magento / Zend Framework
tandai
Saya tidak pernah menemukan solusi untuk masalah ini; Namun, karena saya sejak itu bekerja pada proyek-proyek Magento tambahan di bawah mempekerjakan perusahaan yang berbeda dan telah menggunakan konfigurasi yang sama dengan yang dijelaskan di sini, saya cenderung percaya bahwa itu adalah masalah dengan salah satu dari: 1. Instalasi Magento (buruk) modifikasi / modul / dll) 2. Skrip provisi perusahaan untuk server mereka yang kurang diadaptasi dari Drupal dan beberapa hal terlewatkan 3. Act of God / Nature 4. (kemungkinan besar) Ini Magento Apapun, @fantasticrice memberikan jawaban yang bagus yang seharusnya bantu Google, jadi dia mendapat hadiah!
Robr3rd

Jawaban:

5

Saya pikir itu bukan format yang tepat untuk node cache. Pemahaman saya adalah bahwa semua pengaturan cache harus bersarang di dalam <cache>node. Jadi untuk menggunakan cache dua tingkat dengan memcached + database akan menjadi seperti ini:

<cache>
    <backend>memcached</backend>
    <slow_backend>database</slow_backend>
    <memcached>
        <servers>
            <server1>
                <host>...</host>
                <port>11211</port>
                <persistent>1</persistent>
                <weight>2</weight>
                <timeout>10</timeout>
                <retry_interval>10</retry_interval>
                <status/>
            </server1>
            ...
        </servers>
        <compression>0</compression>
        <cache_dir/>
        <hashed_directory_level/>
        <hashed_directory_umask/>
        <file_name_prefix/>
    </memcached>
</cache>

Ingatlah bahwa <full_page_cache>dapat dikonfigurasikan dengan cara yang persis sama dan dapat menggunakan pengaturan yang berbeda jika diinginkan. Mereka hanya dua contoh cache yang terpisah.

Sama seperti catatan tambahan, saya akan sangat merekomendasikan menggunakan Redis sebagai gantinya. Ini mendukung tag, sehingga dapat digunakan sebagai cache level tunggal dan itu akan melakukan jauh lebih baik daripada memcached + database dua tingkat.

fantastis
sumber
3
Saya mendukung advokasi untuk Redis. Backend lambat db menyebabkan lebih banyak kerusakan daripada yang membantu.
philwinkle
Saya juga sudah mencoba konfigurasi itu (sebenarnya yang saya mulai dengan - yang saya posting disarankan sebagai alternatif karena di atas tidak berfungsi). Apakah <full_page_cache>mungkin mengisi var/cache? Ini pemahaman saya yang justru digunakan var/full_page_cache. Saya juga mencoba menggunakan <cache>...</cache>(gaya Anda) yang sama untuk <full_page_cache>dan enterprise.xmltidak berhasil. Sejauh Redis pergi, sayangnya menggunakan backend DB adalah persyaratan.
Robr3rd
Saya hanya memperhatikan bahwa Anda memilikinya <cache>...<servers>...<server1>...</server1>. Adalah 1di server1penting?
Robr3rd
@RobertRobinson - tidak, tidak penting sama sekali kecuali sebagai cara untuk mendefinisikan beberapa node di bawah <servers>. Anda dapat menggunakan foo, bar, baz semudah server1, server2, server3. Anda benar bahwa full_page_cacheinstance mendapatkan subdirektori sendiri di bawah varjika menggunakan file.
fantasticrice
@RobertRobinson - Anda mungkin tertarik dengan ekstensi ini untuk melihat status konfigurasi Magento .
fantasticrice