我们的环境由 6 个运行在 Solaris 10 机器上的 memcached 服务器和在 Solaris 和 Ubuntu 服务器上混合运行的应用程序代码组成。我们在访问一个操作系统上的数据集和从另一个操作系统访问数据集时遇到了问题。唯一可以从任一操作系统访问密钥的情况是当我们只连接到单个缓存服务器而不是池时。只要您将 2 个或更多服务器添加到池中,所有密钥就只能在创建它们的操作系统上使用。
缓存池全部为 memcached 1.2.6,应用服务器运行 memcache PHP 库 1.86。我们的 Solaris 和 Ubuntu 环境中的所有服务器均为 64 位。
有什么建议么?
答案1
我知道这可能有些陈词滥调 - 但您是否考虑过升级到最新版本 (1.4.4),看看是否有可能修复错误,为您解决此问题?我还没有阅读所有说明。我可以告诉您,但在 1.2.6 和 1.4.4 之间修复了大量错误 - 我们最近刚刚在生产环境中从 1.2.4 升级到 1.4.4,并且也看到了速度的大幅提升。
我刚刚想到的一件事......在客户端,您可以选择是否对密钥进行散列或将其存储为纯文本 - 您是否在两个操作系统上以相同的方式设置?
如果您将 2 个 Solaris 或 Ubuntu 服务器集中在一起而不是混合使用,问题是否解决了?尝试将其缩小到客户端或池问题。
最后,您混合操作系统负载有什么原因吗?在我们的环境中,我们发现这样更容易实现标准化,在需要时更容易部署新机器。