SUPEE-6788(可能)缓存问题


8

自从我们在客户的站点上应用SUPEE-6788补丁以来,该站点每天约有一次宕机,而且似乎唯一可以恢复的就是清除缓存。我们查看了日志,其中许多日志似乎包含“前端控制器达到了100个路由器匹配迭代”。在应用补丁之前,不会发生此问题。任何人都不知道是什么原因造成的吗?有人说这可能是magento问题中的缓存错误,但我无法确定。任何输入都会有所帮助!

一些附加说明:

  • 发生故障时,服务器上没有任何繁重的负载,因此这不是一个因素。
  • 是的,以前的所有补丁均已成功应用。
  • 我们正在使用内存缓存来存储缓存。

不确定是否相关,但是此模块特定于性能,并且将新块和变量添加到SUPEE-6788 github.com/EcomDev/SUPEE6788-PerformanceFix
David Manners

作为另一个数据点,我们有一个站点也存在此问题,到目前为止,该站点已两次关闭,并出现100个路由器匹配迭代错误。直到SUPEE-6788才开始。第一次应用AmpersandHQ补丁(SUPEE-4755)之后,但问题仍在几天后发生,因此该补丁无法为我们解决问题。我们正在使用Redis缓存运行Magento 1.7.0.2。
尼克

Answers:


3

我自己和另一个开发人员也遇到了类似的问题,但是我们似乎通过应用此GitHub中存在的补丁已解决了该问题:https : //github.com/AmpersandHQ/magento-ce-ee-config-corruption-bug

原因似乎是某种竞争状况,其中缓存由一个进程清除,而由另一个进程重新实例化,我已经能够通过遵循该GitHub上列出的步骤来重现它。

我已经与Magento开通了有关此问题的支持票,并且怀疑自补丁程序以来是什么原因引起的,但是我一直在等待回音。

您可以在以下问题上阅读更多有关它的信息:应用SUPEE-6788补丁后,页面样式不正确,路径错误,布局配置丢失


此修复程序是否已在安装了SUPEE-6788的1.8.1.0上经过测试?
Daryl Gochnauer

@ dgwexdev13我尚未在1.8上对其进行测试,但是我同时在1.9和1.13上开发了该补丁。我不认为有问题的模块(Mage_Core_Model_Config)在LONG中已更改,因此该补丁几乎应适用于所有版本。我已经看到该补丁程序在安装了SUPEE 6788的1,12、1.13、1.14系统上运行良好。
路德·罗杰斯

附言:如果/当您收到Magento的回复时,请在此处进行更新。谢谢
Daryl Gochnauer 2015年

恐怕将SUPEE-4755和SUPEE-6788结合使用并不能阻止“达到100次迭代”错误。我已经将它们应用于许多不相关的网站,但我不断看到它们偶尔崩溃。有人有更多的运气吗?
2015年

1

3个站点版本1.8.1存在相同的问题。它在SUPEE 6788之后开始出现。从上面的修复不能解决问题。实际上,似乎有些变化。修复之前,网站每天崩溃两次,而最近一次崩溃发生在2天之后。但是可能与负载有关。这三个站点很小,负载也不大。对于版本为1.6.2和SUPEE 6788的大型站点,不会出现此问题。所有站点都在同一台服务器上-版本1.8.1的三个站点和版本1.6.2的大站点


这没有提供答案,更适合发表评论。您应该提出一些好的问题,并在网站上提供一些好的答案。当您获得足够的声誉时,您也可以发表评论。
Prateek

1
是的,我了解,但是当我尝试发表评论时,我收到一条消息“您必须拥有50个声誉才能发表评论”。而且我认为重要的信息是其他站点也会发生这种情况。并且似乎是特定于版本的。
Dimitar Dimitrov 2015年

@DimitarDimitrov基本上是同一件事-我们在星期二忙了一天,该网站每小时下降约一次。通过将配置缓存从Redis移开,而仅使用文件基缓存(我仍将Redis用于FPC),就可以稳定存储。
Phil Birnie 2015年

在版本1.6.2的大商店之后。因不同的错误多次崩溃:“提供了非法方案,只允许使用字母数字字符”,我们被迫还原补丁。从那以后的24小时内,没有发生崩溃,并且我们所有的商店都稳定了。我真的不喜欢没有补丁的想法,我们正在尝试通过一次测试安装来查找原因,但问题是它不会崩溃。可能需要采取实际行动才能使其崩溃,但我不知道到底是哪个。我们试图用ab引发崩溃,但似乎与负载无关。
Dimitar Dimitrov 2015年

我忘了提到我们正在使用基于文件的简单缓存。该服务器具有php 5.4和opcache,但是禁用任何php缓存均无济于事
Dimitar Dimitrov

1

我们将站点缓存从memcache切换到Redis,然后添加了一个cronjob来每12小时转储一次缓存。它从每天一次崩溃到大约4-5天才崩溃。然后,我们对cronjob进行了调整,使其每6小时转储一次,自那以来一直没有下降(至今已经3-4天了)。我们或托管公司都无法跟踪实际问题,但这似乎对我们来说是一个可行的解决方案。希望能对某人有所帮助。


我建议您在此处输入日志记录表单:github.com/AmpersandHQ/… 这样一来,您将看到哪些代码片段不断触发配置缓存损坏的保存。
路加·罗杰斯

1

我今天早上添加了AmpersandHQ调试代码,并且刚刚在2分钟内发生了“前端控制器达到100个路由器匹配迭代”的异常,发生了大约75次。但是这一次,大概是因为调试代码没有保存损坏的缓存条目,该站点仍在正常运行,而没有所有人都获得异常(我没有刷新缓存)。

我尚未对此进行调查,但是rupture-cache.log包含:

2015-11-22T03:42:42+00:00 DEBUG (7):
#0 app/code/core/Mage/Core/Model/App.php(1147): Mage_Core_Model_Cache->save('<admin><design>...', 'config_global_s...', Array, NULL)
#1 app/code/core/Mage/Core/Model/Config.php(552): Mage_Core_Model_App->saveCache('<admin><design>...', 'config_global_s...', Array, NULL)
#2 app/code/core/Mage/Core/Model/Config.php(474): Mage_Core_Model_Config->_saveCache('<admin><design>...', 'config_global_s...', Array, NULL)
#3 app/code/core/Mage/Core/Model/App.php(421): Mage_Core_Model_Config->saveCache()
#4 app/code/core/Mage/Core/Model/App.php(343): Mage_Core_Model_App->_initModules()
#5 app/Mage.php(683): Mage_Core_Model_App->run(Array)
#6 index.php(87): Mage::run('', 'store')
#7 {main}

这是在Magento 1.7.0.2上的,该版本具有Redis缓存和AmpersandHQ的SUPEE-4755补丁。


2015年12月2日更新:以下是完整堆栈跟踪的另一个错误:

2015-12-02T20:02:27+00:00 DEBUG (7):
#0 app/code/local/Mage/Core/Model/App.php(1156): save('<admin><design><package><name>default</name></package><theme><default>find</default></theme></design></admin>', 'config_global_stores_admin', Array, NULL)
#1 app/code/local/Mage/Core/Model/Config.php(552): saveCache('<admin><design><package><name>default</name></package><theme><default>find</default></theme></design></admin>', 'config_global_stores_admin', Array, NULL)
#2 app/code/local/Mage/Core/Model/Config.php(474): _saveCache('<admin><design><package><name>default</name></package><theme><default>find</default></theme></design></admin>', 'config_global_stores_admin', Array, NULL)
#3 app/code/local/Mage/Core/Model/App.php(430): saveCache()
#4 app/code/local/Mage/Core/Model/App.php(343): _initModules()
#5 app/Mage.php(683): run(Array)
#6 index.php(87): run('', 'store')

梦幻般的队友。感谢您发布yoru堆栈跟踪。你能读这个要点吗?gist.github.com/convenient/2a30572d6d4bcae9796c 我有一个想法,可以将其范围缩小到是useCache = true对象缓存错误还是其他完全错误。
路加·罗杰斯

确定,我修补了这些其他文件。感谢您为补丁所做的工作。我发布后的昨晚,该错误在30分钟内又发生了两次。但是之后,它在15个小时内没有发生。因此,我不太确定如何预测何时会再次发生。
尼克

好的,请保持最新状态。谢谢
卢克·罗杰斯

应用要点中提供的其他补丁后,我又收到2个100个路由器匹配错误。因此,这不能解决问题。在第一个之后,我稍稍修改了调试代码,以提供整个堆栈跟踪,而不是截断的PHP。我的评论中没有空位,因此我修改了上面的原始帖子以包括新的跟踪记录。
尼克

因此,在“查找”模块的主题中出现了错误。我们的网站没有使用find模块,并且看起来该公司现在已经倒闭了(但是默认情况下该模块曾经随Magento一起提供),因此我禁用了该模块。不知道这是否可以解决问题,还是只是列出不同的主题而再次出现。
尼克

1

数周以来,我们在各个Magento CE网站上都遇到了同样的问题。但是,这里发布的建议均无济于事。经过数周令人沮丧的调试会议之后,我们终于设法解决了这一问题。

总而言之,我们发现问题是由于SUPEE-6788补丁,Magento <1.9.2.0和PHP> = 5.5.22的组合造成的,潜在的攻击者甚至安全扫描程序都可以按需关闭站点。我们已经在博客上发布了完整的详细信息,包括修复程序。我真正希望这能帮助其他遭受同样问题困扰的可怜人。


0

自发布SUPEE6788以来,我们一直在遇到此问题以及我们的网站,似乎对xmlrpc Web服务的欺诈性调用可能导致缓存损坏。

由于我们不使用前端服务器+应用SUPEE 4755,因此我们阻止了前端服务器进行的Web服务调用,我会及时通知您。


该补丁确实修改了xml验证以使用libxml_disable_entity_loader不是线程安全的。在某些情况下,这可能会导致Magento重定向到安装页面,但是我相信,在出现此类错误之前,也有可能错过配置生成的loadDB步骤,从而将损坏的数据保存到缓存中。参见magento.stackexchange.com/questions/30071/…–
路加·罗杰斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.