Jak korzystać z bazy danych jako slow_backend zamiast plików w Magento EE 1.12?


14

W Magento EE 1.12.0.0 Wydaje się, że bez względu na to, jakie zmiany konfiguracji wprowadzę app/etc/local.xml, nadal używana jest domyślna pamięć podręczna plików (czego dowodem jest var/cache/zawsze zapełnianie).

Oczekiwanie

  • Memcached jest używany jako fast_backend.
  • Baza danych jest używana jako slow_backend.
  • Pamięć podręczna plików w ogóle nie jest używana (tzn. var/cache/Zawsze powinna być pusta).

Rzeczywista wydajność

  • Memcached jest używany jako fast_backend.
  • Baza danych w ogóle nie jest używana.
  • Używana jest pamięć podręczna plików.

Procedura testowa

  1. Zmień konfigurację na app/etc/local.xml.
  2. Zrestartuj Memcached i Apache (na wszelki wypadek i jest to na moim lokalnym dev boxie, więc mogę również).
  3. Wyczyść pamięć podręczną plików ( rm -rf var/cache/*).
  4. Odśwież stronę główną.
  5. Sprawdź zawartość pamięci podręcznej plików ( ls var/cache).
  6. Zasmucaj się i wróć do nr 1 z inną zmianą konfiguracji.

Config

Zawartość mojego app/etc/local.xmljest następująca:

<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>


Nigdy nie znalazłem rozwiązania tego problemu; Ponieważ jednak od tego czasu pracowałem nad dodatkowymi projektami Magento pod kierunkiem innej firmy i użyłem konfiguracji podobnych do opisanych tutaj, jestem skłonny wierzyć, że był to problem z jednym z: 1. Ta instalacja Magento (zła modyfikacje / moduły / itp.) 2. Skrypty obsługi firmy dla swoich serwerów są słabo dostosowane od Drupala, a niektóre rzeczy zostały pominięte 3. Act of God / Nature 4. (najprawdopodobniej) To Magento Bez względu na to, @fantasticrice dał świetną odpowiedź, która powinna pomóż Googlersom, aby otrzymał nagrodę!
Robr3rd,

Odpowiedzi:


5

Myślę, że nie jest to odpowiedni format dla węzłów pamięci podręcznej. Rozumiem, że wszystkie ustawienia pamięci podręcznej powinny być zagnieżdżone w <cache>węźle. Aby użyć dwupoziomowej pamięci podręcznej z bazą danych memcached +, byłoby to mniej więcej tak:

<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>

Pamiętaj, że <full_page_cache>można skonfigurować dokładnie w ten sam sposób i, jeśli chcesz, użyć innych ustawień. Są to tylko dwie oddzielne instancje pamięci podręcznej.

Na marginesie, gorąco polecam zamiast tego użyć Redis . Obsługuje tagi, więc może być używany jako pamięć podręczna na jednym poziomie i będzie działał znacznie lepiej niż dwupoziomowa pamięć memcached + baza danych.


3
Popieram rzecznictwo Redisa. Powolny backend db powoduje więcej szkód niż pomaga.
philwinkle,

Próbowałem też tej konfiguracji (tak naprawdę to zacząłem - ta, którą opublikowałem, została zaproponowana jako alternatywa, ponieważ powyższe nie działało). Czy to <full_page_cache>może być wypełnienie var/cache? Rozumiem, że zamiast tego używa var/full_page_cache. Próbowałem również przy użyciu tego samego <cache>...</cache>(swój styl) dla <full_page_cache>i enterprise.xmlbezskutecznie. Jeśli chodzi o Redis, niestety wymagane jest użycie backendu DB.
Robr3rd,

Właśnie zauważyłem, że masz <cache>...<servers>...<server1>...</server1>. Czy 1w server1ważne?
Robr3rd,

@RobertRobinson - nie, wcale nie ważne, z wyjątkiem sposobu zdefiniowania wielu węzłów <servers>. Możesz używać foo, bar, baz równie łatwo jak server1, server2, server3. Masz rację, że full_page_cacheinstancja otrzymuje własny podkatalog, varjeśli używa plików.
fantasticrice

@RobertRobinson - możesz być zainteresowany tym rozszerzeniem, aby zobaczyć status konfiguracji Magento .
fantastyczna cena
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.