随着节点数量的增加,Redis 性能下降

随着节点数量的增加,Redis 性能下降

奇怪的问题。我们在负载均衡器后面有 6 个节点。它们是运行 Ubuntu 的高规格 VPS。我们在单独的节点上运行 Redis。其他节点运行 MySQL。整个 LAMP 设置托管 Magento。

从基于文件的缓存过渡到 Redis 中央缓存,我们开始逐个更改每个 Magento 节点,通过 Cm_Cache_Backend_Redis 使用 Redis。两台服务器使用 Redis,一切运行良好。所以我们决定也切换剩下的 4 台服务器。但随后性能开始大幅下降。New Relic 确认,性能回归高达 300%。应用程序响应时间从合理的 900-1200 毫秒变为 3K+ 毫秒。页面加载时间变得很糟糕,跳跃至少 2 秒,通常更多。在重度(200 个用户分布在 6 台服务器上)峰值负载下,回归更加严重。

在跟踪中,我们开始看到 Redis 的一切都不正常。

Category    Slowest components  Count   Duration    %
Custom  Varien_Simplexml_Element::asNiceXml 578 19,200 ms   33%
Custom  Varien_Simplexml_Element::extendChild   673 10,200 ms   18%
Custom  Cm_RedisSession_Model_Session::read 1   5,070 ms    9%
Custom  Varien_Simplexml_Element::extend    76  4,380 ms    8%
Custom  Varien_Simplexml_Element::hasChildren   69  2,690 ms    5%
Custom  Mage_Core_Model_Config::loadModulesConfiguration    1   2,270 ms    4%
Remainder   Remainder   1   13,700 ms   24%
Total time          57,500 ms   100%

XML 模块和核心配置加载变得非常慢,通常很快的 Redis 会话现在也变得很慢。整个系统变得非常缓慢。

Redis 服务器是默认的 Ubuntu 安装,目前我们无法直接控制。客户端在 6 个节点上,我们确实可以控制。目前,它使用内置的 Credis 独立客户端,我们打算将其替换为 phpredis PECL 客户端,这应该会在一定程度上提高性能。

其余一切都是默认的https://github.com/colinmollenhour/Cm_Cache_Backend_Redis

希望客户端交换能带来改变,但与此同时,我们渴望听到更多建议。为什么 2 个节点运行良好且速度很快,但 6 个节点就开始卡住?这听起来像是客户端或服务器端的问题吗?

非常欢迎您的想法。

相关内容