Magento EE 1.12에서 파일 대신 데이터베이스를 slow_backend로 사용하는 방법은 무엇입니까?


14

Magento EE 1.12.0.0에서는 구성 변경에 관계없이 app/etc/local.xml 기본 파일 캐시가 계속 사용되는 ( var/cache/항상 채워짐으로 증명 됨 ).

기대

  • Memcached는 fast_backend로 사용됩니다.
  • 데이터베이스는 slow_backend로 사용됩니다.
  • 파일 캐시는 전혀 사용되지 않습니다 (즉, var/cache/항상 비어 있어야 함).

실제 출력

  • Memcached는 fast_backend로 사용됩니다.
  • 데이터베이스가 전혀 사용되지 않습니다.
  • 파일 캐시가 사용 중입니다.

테스트 절차

  1. 구성을 다음으로 변경 app/etc/local.xml .
  2. Memcached와 Apache를 다시 시작하십시오 (좋은 측정을 위해 로컬 dev 상자에 있으므로).
  3. 파일 캐시를 지우십시오 (rm -rf var/cache/* ).
  4. 홈페이지를 새로 고칩니다.
  5. 파일 캐시의 내용을 확인하십시오 (ls var/cache ).
  6. 슬프고 다른 설정 변경으로 # 1로 돌아갑니다.

구성

내 내용은 app/etc/local.xml다음과 같습니다.

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

1
따로, 필요한 독서 : 마 젠토 / 젠드 프레임 워크의 2
레벨

이 문제에 대한 해결책을 찾지 못했습니다. 그러나 이후 다른 회사의 직원으로 추가 Magento 프로젝트를 수행했으며 여기에 설명 된 것과 유사한 구성을 사용 했으므로 다음 중 하나의 문제라고 생각합니다. 1. Magento 설치 수정 / 모듈 / 등) 2. 서버에 대한 회사의 프로비저닝 스크립트가 Drupal에서 제대로 조정되지 않았고 몇 가지 누락되었습니다. 3. 신 / 자연의 행위 4. (대부분) 마 젠토입니다. @fantasticrice는 Google 직원을 도와 상을 받으십시오!
Robr3rd

답변:


5

캐시 노드에 적합한 형식이 아니라고 생각합니다. 내 이해는 모든 캐시 설정이 <cache>노드 안에 중첩되어야한다는 것 입니다. 따라서 memcached + 데이터베이스와 함께 2 단계 캐시를 사용하려면 다음과 같습니다.

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

명심하십시오 <full_page_cache> 정확히 같은 방식으로 구성 할 수 있으며 원하는 경우 다른 설정을 사용할 수 있습니다. 이들은 단지 두 개의 개별 캐시 인스턴스입니다.

참고로 Redis를 대신 사용 하는 것이 좋습니다 . 태그를 지원하므로 단일 레벨 캐시로 사용할 수 있으며 2 레벨 memcached + 데이터베이스보다 훨씬 우수합니다.


3
나는 Redis를 옹호합니다. db 느린 백엔드는 도움보다 더 많은 피해를줍니다.
philwinkle

나는 또한 그 구성을 시도했다. 는 것입니다 <full_page_cache>가능성이 작성 될 var/cache? 대신을 사용한다는 것을 이해합니다 var/full_page_cache. 또한 같은 사용 시도 <cache>...</cache>를 위해 (스타일을) <full_page_cache>와에 enterprise.xml아무 소용. Redis가가는 한 불행히도 DB 백엔드를 사용해야합니다.
Robr3rd

방금 당신이 가지고 있음을 알았습니다 <cache>...<servers>...<server1>...</server1>. 인가 1server1중요?
Robr3rd

@RobertRobinson-nope, 아래에 여러 노드를 정의하는 방법을 제외하고는 전혀 중요하지 않습니다 <servers>. server1, server2, server3처럼 foo, bar, baz를 쉽게 사용할 수 있습니다. 파일이 파일을 사용 full_page_cache중인 var경우 인스턴스가 자체 서브 디렉토리를 얻는 것이 맞습니다 .
fantasticrice

@RobertRobinson- 이 확장에 관심이 있으면 Magento의 구성 상태를 볼 수 있습니다 .
fantasticrice
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.