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

时间:2013-06-28 13:45:06

标签: magento magento-1.7 scalability

我的magento商店遇到了问题。

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

Magento版本:1.7.0.2 编译:关闭 类别/产品:扁平化 缓存:全部启用 索引:全部启用

通过magento GUI应用700折扣规则需要永远(> 30分钟),而不会得到任何反馈。之后没有规则被应用。 我在这里找到了一个shell脚本:http://browse.feedreader.com/c/Drew_Gillson/232210211。 通过这种方式,我可以在应用规则时获得大量反馈,以及将规则应用于产品所需的时间。 我看到的是,每个产品大约需要2秒才能应用所有规则。 这意味着应用所有规则将需要2s * 2800 = 4200s / 60/60 = 1:10小时 这当然是一个令人无法接受的性能问题。随着CPU和RAM的使用达到顶峰。 托管的服务器是具有4GB RAM(3.5GB免费)和4个专用CPU核心的VPS。 (xeon 2.4GHZ)

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

Magento目录规则是否可以实现? 或者是否有另一种方法可以根据目录规则在数据库中高效生成“catalogrule_product_price”行。

谢谢,

的Wouter

1 个答案:

答案 0 :(得分:1)

我可以提出两种一般方法:

1)考虑降低价格指数并动态计算价格。这显然较慢,但如果你正确使用缓存,它可能会变好。

执行此操作的最佳方法是创建自定义产品类型,并通过扩展Mage_Catalog_Model_Product_Type_Price来实现您自己的价格逻辑。创建自定义产品类型不会破坏Magento的核心功能。

您还需要对Mage_Catalog_Model_Product :: getFinalPrice()执行某些操作,因为在类别视图中,价格来自索引。

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

2)考虑实施部分规则应用功能。价格指数表(catalog_product_index_price)取决于产品,客户组,网站和税收设置。当其中一个更改时,您可以触发更新所需的行。

这两条路线都非常复杂且开发密集,但我担心没有其他解决办法。