Magento增加了应用目录规则的不良性能

Magento增加了应用目录规则的不良性能,magento,magento-1.7,scalability,Magento,Magento 1.7,Scalability,我的magento商店出现问题 我们目前为所有客户设置了+-700个目录规则。 在包含2800个产品(可配置且简单)和80个属性的目录上 Magento版本:1.7.0.2 汇编:关闭 类别/产品:扁平 缓存:全部启用 索引:所有已启用 通过magento GUI应用700折扣规则需要花费很长时间(>30分钟),而不会得到任何反馈。之后没有规则被应用。 我尝试了在此处找到的shell脚本:。 这样,当应用规则时,我会得到很多反馈,以及将规则应用于产品所需的时间。 我所看到的是,每个产品应用所有规

我的magento商店出现问题

我们目前为所有客户设置了+-700个目录规则。 在包含2800个产品(可配置且简单)和80个属性的目录上

Magento版本:1.7.0.2 汇编:关闭 类别/产品:扁平 缓存:全部启用 索引:所有已启用

通过magento GUI应用700折扣规则需要花费很长时间(>30分钟),而不会得到任何反馈。之后没有规则被应用。 我尝试了在此处找到的shell脚本:。 这样,当应用规则时,我会得到很多反馈,以及将规则应用于产品所需的时间。 我所看到的是,每个产品应用所有规则大约需要2秒钟。 这意味着应用所有规则需要2s*2800=4200s/60/60=1:10小时 这当然是一个不可接受的性能问题。随着CPU和RAM的使用率达到顶峰。 该服务器承载的是一个VPS,具有4GB内存(3.5GB空闲)和4个专用CPU核心。(xeon 2.4GHZ)

当我将目录规则的数量减少到+-25时,性能是可以接受的(几分钟)。但在我们的案例中,由于不同客户的定价协议不同,我们希望使用很多目录规则

这在Magento目录规则中是否可行? 或者是否有其他方法可以根据目录规则在数据库中高效地生成“catalogrule\u product\u price”行

谢谢


Wouter

我可以建议两种一般方法:

(p>1)考虑降低价格指数并即时计算价格。这显然比较慢,但如果正确使用缓存,结果可能会很好

最好的方法是创建自定义产品类型,并通过扩展Mage_Catalog_Model_product_type_price实现您自己的价格逻辑。创建自定义产品类型不会破坏Magento的核心功能

您还需要使用Mage_Catalog_Model_Product::getFinalPrice(),因为在category视图中,价格是从索引中获取的

注意:如果要按价格排序或按价格筛选,您将遇到麻烦。这些函数在数据库上运行。你需要解决这个问题

2)考虑实现部分规则应用函数。价格指数表(目录产品指数价格)取决于产品、客户群、网站和税务设置。当这些更改之一发生时,可以触发以更新所需的行


这两条路线都非常复杂,需要大量开发,但恐怕没有其他解决方案。

虽然花了一些时间,但我们已经开发出一种更快的方法,与供应商一起计算价格规则。应用这些规则仍然需要很长时间,但重新计算价格指数是加快速度的主要因素,现在速度非常快。谢谢你的见解:)@Flashin,我能问一下你用什么方法来加速规则的应用吗?由于目录的大小,我也遇到了同样的问题。他们已经开发了一种将它们应用于自己的引擎的方法。我们通过支持客户群并希望通过HHVM进一步提高性能的Lesti::FPC进一步加快了这一速度