Magento Memcached Sessions - PullRequest
       9

Magento Memcached Sessions

4 голосов
/ 06 июня 2011

В настоящее время я пытаюсь настроить производственную среду для Magento со следующей настройкой:

2x веб-сервер, 1x сервер БД, балансировщик нагрузки.

Таким образом, балансировщик нагрузки будет распределять трафик между веб-серверами, но не будет использовать липкие сессии.

Чтобы решить проблему разделения сеансов между серверами, я выбрал использование Memcached. У меня есть сервер Memcached, работающий на каждом веб-сервере, и затем я указал список серверов Memcached в local.xml на каждом веб-сервере.

Кэш работает, так как я определенно заметил увеличение скорости, плюс я вижу, что сеансы распределяются между веб-серверами. Проблема заключается в том, что кеш работает слишком хорошо. Динамические части страницы (такие как корзина и сообщения) кэшируются полностью для каждой страницы.

Я заметил, что getChildHtml (), который вы вызываете, чтобы поместить корзину на страницу, имеет необязательный параметр useCache, который я явно передаю в false, но это ничего не делает. Вот мое определение local.xml на случай, если я что-то там не так сделал (конфиденциальная информация была опущена):

<config>
<global>
    <install>
        <date></date>
    </install>
    <crypt>
        <key></key>
    </crypt>
    <disable_local_modules>false</disable_local_modules>
    <resources>
        <db>
            <table_prefix></table_prefix>
        </db>
        <default_setup>
            <connection>
            </connection>
        </default_setup>
    </resources>
    <session_save><![CDATA[memcache]]></session_save> <!-- db / memcache / empty=files -->
    <session_save_path><![CDATA[tcp://X.X.X.X:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path><!-- e.g. for memcache session save handler tcp://10.0.0.1:11211?persistent=1&weight=2&timeout=10&retry_interval=10 -->
    <session_cache_limiter><![CDATA[private]]></session_cache_limiter><!-- see http://php.net/manual/en/function.session-cache-limiter.php#82174 for possible values -->
    <cache>
        <backend>memcached</backend><!-- apc / memcached / xcache / empty=file -->
        <slow_backend>database</slow_backend> <!-- database / file (default) - used for 2 levels cache setup, necessary for all shared memory storages -->
        <slow_backend_store_data></slow_backend_store_data> <!-- 1 / 0 (default) - used for 2 levels cache setup, sets whether store data in db slow cache backend -->
        <auto_refresh_fast_cache>1</auto_refresh_fast_cache> <!-- 1 / 0 (default) - used for 2 levels cache setup, sets whether refresh data in fast cache backend -->
        <memcached><!-- memcached cache backend related config -->
            <servers><!-- any number of server nodes can be included -->
                <server>
                    <host><![CDATA[X.X.X.X]]></host>
                    <port><![CDATA[11211]]></port>
                    <persistent><![CDATA[1]]></persistent>
                </server>
                <server>
                    <host><![CDATA[X.X.X.X]]></host>
                    <port><![CDATA[11211]]></port>
                    <persistent><![CDATA[1]]></persistent>
                </server>
            </servers>
        </memcached>
    </cache>
</global>
<admin>
    <routers>
        <adminhtml>
            <args>
                <frontName><![CDATA[admin]]></frontName>
            </args>
        </adminhtml>
    </routers>
</admin>

Я также заметил другое странное поведение, например, возможность очищать кеш на экране управления кешем на панели администратора. Это нормально при использовании memcached в Magento и как я могу решить проблему всей кэшируемой страницы?

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Для тех, у кого все еще есть проблема, подобная этой, мне удалось решить мою проблему.Основная проблема, с которой я столкнулся, заключалась в том, что я использовал разные серверы memcached на каждом веб-узле, что было неверно, поскольку он использует ваш сеанс в качестве ключа для поиска кэшированных данных.Кроме того, вам нужно убедиться, что вы установили постоянный элемент в теге сервера на 0 вместо 1. С этими настройками сайт работает нормально.

1 голос
/ 29 августа 2011
tcp://X.X.X.X:11211?persistent=0

Как это?

Или еще как:

<server>
  <host><![CDATA[xx.xx.x.xx]]></host>
  <port><![CDATA[11211]]></port>
  <persistent><![CDATA[0]]></persistent>
  <weight><![CDATA[2]]></weight>
  <timeout><![CDATA[10]]></timeout>
  <retry_interval><![CDATA[10]]></retry_interval>
  <status><![CDATA[]]></status>
</server>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...