【问题标题】:Keep getting redis error on Amazon EC2在 Amazon EC2 上不断收到 redis 错误
【发布时间】:2014-07-17 07:08:15
【问题描述】:

我刚刚将我的 Magento 站点移至 Amazon EC2,但不断收到“与 Redis 的连接在 2 次失败后失败”错误。我试图从 app/etc/local.xml 中删除 redis 配置,但仍然出现该错误。

我还尝试直接从 core_cache_option 表中禁用所有缓存选项。我不知道如何清理已经缓存的文件。 var/cache 文件夹下没有预期的缓存文件,我尝试从 redis-cli 命令提示符刷新,但仍然不断收到此错误。

知道我还应该尝试什么吗?

<cache>
  <backend_options>
    <server><![CDATA[/var/tmp/_cache.sock]]></server>
    <port><![CDATA[0]]></port>
    <persistent><![CDATA[]]></persistent>
    <database><![CDATA[0]]></database>
    <password><![CDATA[]]></password>
    <connect_retries><![CDATA[1]]></connect_retries>
    <read_timeout><![CDATA[10]]></read_timeout>
    <automatic_cleaning_factor><![CDATA[0]]></automatic_cleaning_factor>
    <compress_data><![CDATA[1]]></compress_data>
    <compress_tags><![CDATA[1]]></compress_tags>
    <compress_threshold><![CDATA[20480]]></compress_threshold>
    <compression_lib><![CDATA[gzip]]></compression_lib>
    <use_lua><![CDATA[0]]></use_lua>
  </backend_options>
  <backend><![CDATA[Cm_Cache_Backend_Redis]]></backend>
</cache>

【问题讨论】:

    标签: magento amazon-ec2 redis


    【解决方案1】:

    鉴于 EC2 实例是短暂的,您应该能够重新生成该实例,对吗?如果那不是一个选择——

    首先,检查app/etc/ 是否有其他 XML 文件。 Magento 将解析它在此文件夹中找到的 任何 XML 文件。我见过类似下面的旅行的人了

    $ ls app/etc/*.xml
    local.xml
    local.backup.xml
    

    Magento 解析local.xmllocal.backup.xml,备份值覆盖local.xml 中的新值。此外,请确保您使用的是您认为的 local.xml。 Magento 在以下位置加载本地配置。添加一些临时调试以确保它正在做你认为它正在做的事情。

    #File: app/code/core/Mage/Core/Model/Config.php
    public function loadBase()
    {
        $etcDir = $this->getOptions()->getEtcDir();
        $files = glob($etcDir.DS.'*.xml');
        $this->loadFile(current($files));
        while ($file = next($files)) {
            var_dump($file);
            $merge = clone $this->_prototype;
            $merge->loadFile($file);
            $this->extend($merge);
        }
        if (in_array($etcDir.DS.'local.xml', $files)) {
            $this->_isLocalConfigLoaded = true;
        }
        return $this;
    }
    

    其次,清除缓存后,请确保 Magento 正在重新加载配置。添加一些临时调试

    #File: app/code/core/Mage/Core/Model/Config.php
    public function init($options=array())
    {
        $this->setCacheChecksum(null);
        $this->_cacheLoadedSections = array();
        $this->setOptions($options);
        $this->loadBase();
    
        $cacheLoad = $this->loadModulesCache();
        if ($cacheLoad) {
            var_dump("Loaded Config from Cache");
            return $this;
        }
        else
        {
            var_dump("Reloading configuration");     
        }
    
        $this->loadModules();
        $this->loadDb();
        $this->saveCache();
        return $this;
    }
    

    最后,如果您怀疑问题是基于文件的缓存未清除,请在

    中删除一些调试代码
    #File: app/code/core/Mage/Core/Model/Config/Options.php
    public function getCacheDir()
    {
        //$dir = $this->getDataSetDefault('cache_dir', $this->getVarDir().DS.'cache');
        $dir = $this->_data['cache_dir'];
        $this->createDirIfNotExists($dir);
        var_dump($dir);
        return $dir;
    }
    

    这会让你知道 Magento 正在读取的缓存目录——如果 Magento 无法读取本地的 var,它会弹出到根级别的 /var/ 文件夹。

    【讨论】:

    • 谢谢,艾伦。你就是那个男人!没错,我确实备份了 local.xml 并将其放在同一个文件夹中。我以为 Magento 只会从 local.xml 读取。现在一切正常,包括redis。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2020-06-28
    相关资源
    最近更新 更多