清除缓存后,Magento上的503服务暂时不可用

Ged*_*lya 3 caching magento http-status-code-503

在管理员下清除Magento中的缓存后,我收到503错误"服务暂时不可用".要清楚,这是由清除缓存引起的'var/cache'.这与可能导致相同或类似问题的维护问题无关(由已删除的maintenance.flag文件解决).应用程序的根目录中不存在维护标志.我已经尝试过研究这个问题,似乎每个帖子都会回到维护问题.

有一点需要注意; 503错误是Web Server生成的.维护问题返回503但是应用程序(Magento)返回它; 所以你看到应用程序徽标,链接等等.

503错误

我检查了Web服务器日志,并生成以下错误:

539 access forbidden by rule, client: 165.225.138.177, server: , request: "POST /app/etc/local.xml HTTP/1.1"
Run Code Online (Sandbox Code Playgroud)

我检查了文件,这对我来说很明显,这是由于所有权冲突; 我更改了文件所有者,但问题仍然存在.

检查Magento错误日志,var/reports我看到以下错误:

the error log (var/reports) reflects the following error: "Mage registry key "_singleton/" already exists"
Run Code Online (Sandbox Code Playgroud)

完整的错误是:

a:5:{i:0;s:46:"Mage registry key "_singleton/" already exists";i:1;s:1157:"
#0 /data/html/app/Mage.php(223): Mage::throwException('Mage registry k...')
#1 /data/html/app/Mage.php(477): Mage::register('_singleton/', false)
#2 /data/html/app/code/core/Mage/Core/Model/Factory.php(81): Mage::getSingleton(false, Array)
#3 /data/html/app/code/core/Enterprise/UrlRewrite/Model/Url/Rewrite.php(94): Mage_Core_Model_Factory->getSingleton(false)
#4 /data/html/app/code/core/Enterprise/UrlRewrite/Model/Url/Rewrite/Request.php(114): Enterprise_UrlRewrite_Model_Url_Rewrite->loadByRequestPath(Array)
#5 /data/html/app/code/core/Enterprise/UrlRewrite/Model/Url/Rewrite/Request.php(58): Enterprise_UrlRewrite_Model_Url_Rewrite_Request->_loadRewrite()
#6 /data/html/app/code/core/Mage/Core/Model/Url/Rewrite/Request.php(116): Enterprise_UrlRewrite_Model_Url_Rewrite_Request->_rewriteDb()
#7 /data/html/app/code/core/Mage/Core/Controller/Varien/Front.php(165): Mage_Core_Model_Url_Rewrite_Request->rewrite()
#8 /data/html/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#9 /data/html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#10 /data/html/index.php(83): Mage::run('default', 'store')
#11 {main}
";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供任何可能导致此问题的输入吗?

Ala*_*orm 7

首先,对于谷歌的后代来说,这更加确定

  • maintenance.flag根文件夹中没有文件
  • 您的错误不是Web服务器生成的(添加test.txt到根目录并确保您可以访问它)

假设您已完成上述操作 - Magento系统库存将返回503错误的地方不多.第1步应检查以下内容

  • 错误消息的PHP/Web服务器错误日志
  • Magento var/log/exception.log异常日志
  • Magento var/log/system.log异常日志
  • Magento var/report错误报告文件

有关错误的任何特定上下文.第三方扩展很可能产生503.

以下是Magento安装(CE和EE)库存中产生503错误的一些事项(EE代码因模糊担心不明确的许可/合理使用而被排除在外)

如果您使用Redis作为缓存服务器并且其锁定系统不堪重负,则系统可能会开始产生503错误.

#File: app/code/community/Cm/RedisSession/Model/Session.php
// Limit concurrent lock waiters to prevent server resource hogging
if ($waiting >= $this->_maxConcurrency) {
    // Overloaded sessions get 503 errors
    $this->_redis->hIncrBy($sessionId, 'wait', -1);
    $this->_sessionWritten = TRUE; // Prevent session from getting written
    $writes = $this->_redis->hGet($sessionId, 'writes');
    if ($this->_logLevel >= 4)
    {
        Mage::log(
            sprintf("%s: Session concurrency exceeded for ID %s; displaying HTTP 503 (%s waiting, %s total requests)\n  %s (%s - %s)",
                $this->_getPid(),
                $sessionId, $waiting, $writes,
                Mage::app()->getRequest()->getRequestUri(), Mage::app()->getRequest()->getClientIp(), Mage::app()->getRequest()->getHeader('User-Agent')
            ),
            Zend_Log::WARN, self::LOG_FILE
        );
    }
    require_once(Mage::getBaseDir() . DS . 'errors' . DS . '503.php');
    exit;
}
Run Code Online (Sandbox Code Playgroud)

如果找不到订单,PayPal IPN控制器端点将抛出503

#File: app/code/core/Mage/Paypal/Model/Ipn.php
if (empty($this->_order)) {
    // get proper order
    $id = $this->_request['invoice'];
    $this->_order = Mage::getModel('sales/order')->loadByIncrementId($id);
    if (!$this->_order->getId()) {
        $this->_debugData['exception'] = sprintf('Wrong order ID: "%s".', $id);
        $this->_debug();
        Mage::app()->getResponse()
            ->setHeader('HTTP/1.1','503 Service Unavailable')
            ->sendResponse();
        exit;
    }    
    //...
}
Run Code Online (Sandbox Code Playgroud)

企业版可以返回503英寸

app/code/core/Enterprise/Staging/Model/Observer.php
Run Code Online (Sandbox Code Playgroud)

如果内容登台配置值为true.

EE也可以返回503英寸

app/code/core/Enterprise/WebsiteRestriction/Model/Observer.php
Run Code Online (Sandbox Code Playgroud)

如果您在私人销售模式下运行且未授权查看销售.