1

我正在研究使用 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 的 Query Cache,这对我有很大帮助。我还发现 zencart 对 getimagesize() 的使用占其加载时间的大部分,因此我正在创建一种从缓存中获取这些值的方法。大多数 mysql 查询延迟是由过多的读取操作引起的,而不是写入操作。自从我实施这些更改后,情况有了很大的改善。我会将 AJ 的答案标记为正确,因为他确实回答了我最初的要求。

4

1 回答 1

2

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

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

进行增量更改并监控结果。一次改变太多的东西会让你很难确定你看到的任何收益(希望不是损失)的原因。

于 2011-04-16T21:13:37.693 回答