Zen Cart对数据库的写操作太多.可能的解决方案



我正在做一些使用Zen Cart的东西。在这一点上,从Zen Cart更改网站是不可选的。网站大部分时间运行良好,但每隔一周左右,网站的性能就会受到影响。与服务器提供商的讨论表明,几乎可以肯定,这是由于对数据库的写操作太多导致i/o使用效率低下造成的。数据库服务器不同于web服务器,但是如果数据库服务器没有足够的可用i/o,站点就会受到影响(因为站点上几乎每个页面都要进行数据库调用)。我正在寻找一个解决方案来解决这个问题,相信我已经找到了一些,但希望得到一些反馈。

A)确定我是否可以修改zen cart使用INSERT DELAY而不是INSERT,这样页面就不会在特定查询上挂起。然而,Zen Cart是一个庞大的系统,像这样进行大规模的更改可能会产生负面影响(例如,DELAY语句不会在已经被locked tables锁定的表上执行,或者后续页面不能正确反映用户在先前页面上所采取的操作,因为它们可以在没有完成先前查询的情况下加载)。

B)部署混合托管解决方案,其中站点运行在云上,但数据库运行在具有多个SAS驱动器的服务器上,以提高写速度,从而更快地为后续查询释放I/O。我希望避免这样做,因为这会大大增加成本。

有没有人在Zen-Cart中遇到这个问题?你对这些修复有什么看法?你使用了哪些修复方法?

更新:我最终使用了Data Diggers的查询缓存,这帮了我很大的忙。我还发现zencart对getimagesize()的使用占用了大部分加载时间,因此我正在创建一种从缓存中获取这些值的方法。大多数mysql查询延迟是由过多的读操作引起的,而不是写操作。自从我实施了这些改变之后,情况有了很大的改善。我将把AJ的答案标记为正确,因为他确实回答了我最初的问题。

进行广泛的更改,如INSERT DELAY而不是INSERT 可能是正确的解决方案,但并不是所有的查询都导致了问题。只有少数几个(甚至可能只有一个)对性能问题负责。

您应该尝试找出哪个特定的查询/查询导致性能问题。与您的主机一起启用慢速查询日志记录,并让MySQL告诉您效率低下的地方。如果没有一个运行缓慢,这只是一个纯粹的并发问题,如果你与Zen Cart结合,那么你需要考虑加强你的基础设施。我喜欢你关于拥有独立的Web和数据库服务器的想法。不过也不要太过了——如果它们现在都在一台服务器上运行,那就换一台服务器,把你的数据库移过来。

进行增量的更改并监视结果。一次更改太多的东西将使您很难确定您所看到的性能增益(希望不是损失)的原因。

相关内容

  • 没有找到相关文章

最新更新