我们正在使用memcache运行Magento EE 1.11。 2GB每个memcahce服务器,总计4GB。我们有大约24万产品。

  • 可用RAM:6GB
  • 核心:16
  • 线程:32

这是交易,添加了更多的新产品,每天都会发生更改产品,当然,每次在后端中添加/修改新产品时,缓存就会无效,特别是“全页高速缓存”。

当启用Magentos Auto Cache生成时,大约需要2天才能建立缓存,并将8个线程分配给爬虫。 2天后,Memcache在两个RAM磁盘之间散布〜2GB。

问题是,当每天修改产品时,高速缓存就会无效,并且一旦“全页高速缓存”刷新了那些2GB的高速缓存,将返回正方形,返回正方形,0,0,Magentos Auto Cache的粘性周期再次开始。现在,缓存不仅回到0,而且CPU使用率达到90%,并且网站变成5-10+秒的等待游戏,您只会忘记尝试请求具有100多个变体的产品,如果是没有缓存,第一次加载需要几分钟,这太荒谬了。

所以,我向社区的问题。

  • Magento是否可以自动“更新”缓存,如果无效,则可以自动“更新”缓存,而无需重建整个缓存并从0开始?我知道何时缓存无效,Magento知道Somethings已更改,但在缓存中的位置不完全(如果我错了,请问我)。是否有模块/配置可以绕过整个缓存?

在旁注上,我们使用的是微型砖光模块。

  • Magentos可以用Cronjob控制自动缓存吗?说,开始于晚上10点至凌晨6点爬行。

  • 处理这种情况的最佳方法是什么?,因为您了解重建每天在千兆字节中的缓存是不可接受的。

有帮助吗?

解决方案

你没有足够的公羊

我们有大约24万产品
可用RAM:6GB
线程:32

您没有足够的RAM来供您拥有的产品数量。根据逻辑核心,我们建议至少2-4GB RAM。

如果您绘制可能的内存使用量:

  • 64个PHP线程 max_memory 〜768MB = 24GB
  • 240,000种产品可能意味着约15GB的InnoDB桌子空间
  • 64个PHP线程将保证128个MySQL连接,通常为每个连接的成本约为200mb
  • Redis和240,000种产品的后端存储 lzf 压缩 - 仍将消耗约6GB的RAM

因此,到目前为止,总数是70GB的持久RAM-我们甚至没有提及操作系统等。

您的硬件是 可怕地指定. 。我建议阅读 Magento服务器设置 文章为如何进步提供了一些感觉。

memcached不支持缓存标签

如果您使用的是memcached(不是问题,它的性能很高),那么您要么存储缓存标签。如果您没有 slow_backend 定义 - 然后您不会存储标签,这基本上意味着您的缓存无法区分任何不同的缓存类型 - 因此您将无法独立冲洗它们。

阅读此信息, http://www.sonassi.com/knowledge-base/magento-kb/what-is-memcache-actacache-actally-caching-in-magento/

我们强烈建议切换到Redis。它具有怪癖,并且确实需要大型商店进行大量的微调。但是总体而言,表现会比Memcaching稍微获得缓存标签支持的真正好处。

404和FPC

FPC有一个真正的问题,事实上,所有缓存发动机都有404s的问题。原因是,任何仍被爬行或链接到的旧URL都将降落在必须迭代整个整个的页面上 core_url_rewrite 表,尝试与所有定义的路由器和名称空间找到匹配,然后最终放弃并加载404。

然后缓存一个没有价值的资源,并将在您的缓存存储中消耗空间。您可能会发现大部分备忘录存储实际上是由404个内容食用的。

借助大型目录(240k产品),您肯定会在产品营业额中得到相当大的份额,因此,URL以及随后的许多404。

FPC无效与清洁

目前 - 默认情况下 - FPC的行为是清洁更改的缓存,而不仅仅是使缓存条目无效。我们编写了一个扩展程序,以改变EE商店的行为,以完全完成您需要的工作。

这是一个快速的补丁,可以让您了解如何解决问题。

app/code/core/Enterprise/PageCache/etc/config.xml
index 6a56a80..85ebc92 100644
--- app/code/core/Enterprise/PageCache/etc/config.xml
+++ app/code/core/Enterprise/PageCache/etc/config.xml
@@ -139,7 +139,7 @@
             <observers>
                 <enterprise_pagecache>
                     <class>enterprise_pagecache/observer</class>
-                    <method>cleanCache</method>
+                    <method>invalidateCache</method>
                 </enterprise_pagecache>
             </observers>
         </catalogrule_after_apply>

不要运行爬网

如果您的脚步足够不错 - 我们不建议运行爬网工具,它会产生不必要的负载。人员/机器人/爬行者浏览网站应保持缓存。

但是要回答您的问题,如果您查看上面提到的配置文件 - 您会看到为爬网浏览窗口定义的CRON时间表。

如果您能负担得起陈旧的内容

最终,如果您有 足够的 内存。您很可能会从增加FPC中存储的内容的TTL中受益 - 以使您的缓存数据存活更长的时间。

在里面 <full_page_cache> 标记您 ./app/etc/local.xml 只是定义

<lifetimelimit>86400</lifetimelimit>

寿命以秒为单位定义。您需要在内容新鲜度,性能和实际可用的存储空间之间取得平衡。

您为什么使用EE使用第三方缓存扩展

您要为FPC支付溢价 - 让我想说的是非常好。那么,为什么要在顶部运行第三方替代方案。 去掉它。

这样说。如果您的汽车运行良好 - 您会在靴子中添加另一个引擎以补偿吗?还是只是修复已经在那里的引擎?

其他提示

我们非常了解您!我们每天添加新的或更改我们的产品,并修改静态块。因此,我们已经充满了无效的Magento Cache,并且这个常数用于系统 - >缓存管理。我们讨厌手动刷新无效的缓存类型的必要性。

然后我们安装了新的 Magento优化器扩展. 。该模块可自动化此过程。它以指定的频率刷新无效/所有缓存类型或冲洗Magento Cache存储。这对我们所有的团队来说都是一个真正的解脱!

该扩展程序的另一个重要功能是,它清洁了会话文件和比X天更老的错误报告。每个人都知道,var/session和var/报告目录的大小可以成千兆字节,这些文件的数量可能超过一百。因此,为了放慢网站的性能,我们设置了一次Magento Optimizer,并忘记了这些目录的定期刷新。

当客户试图登录时,Magento以将废弃的购物车与当前的购物车合并而闻名。从客户的经验和忠诚度的角度来看,这是破坏性的。 Magento Optimizer模块自动删除X天较早的废弃购物车。您也可以在销售时间使用此功能,并限制现有废弃的购物车的时间。

许可以下: CC-BY-SA归因
scroll top