我已经快速浏览了其他类似题目的问题,没有一个与我目前遇到的问题特别相似。
基本上,我们已经有了一个多节点的memcached环,运行了两年多,而且大部分情况是没有问题的。 memcache安装最近被移动到专用服务器上,容量增加了两倍(2GB到2GB)。 起初,我们遇到了麻烦,我认为这是php库如何与服务器交谈的问题,或者是服务器列表的顺序问题,或者是它们被错误地启动。
服务器“似乎”工作正常,但密钥似乎被存储在多个服务器上,并且过期不会过期值的所有实例。
基本上,我们将哈希机制从标准更改为一致,并且关键查找(到期/获取)和一切问题似乎已经恢复正常。
不过,在过去几周里,我一直在监视事物,注意到第一台服务器似乎要比第二台服务器多出许多倍(PHP memcache monitor工具报告每秒平均有1200次点击 ,而第二台服务器在500 )。
谁能解释一下:
我发现memcached是一个非常棒的工具,对于它的目的来说是完美的,但实际的最佳实践指南和有用的文档(很less有详细描述)几乎没有。 如果我能够对发生的事情有一些了解,我一定会把它作为一个技术文章发布给所有人看(今后会有所帮助),但是我现在有麻烦了!
提前致谢
如果您的密钥具有不同的访问模式,您将看到每个memcached节点的stream量不均衡。 例如,如果你有两个密钥,其中a是每秒获取/设置500次,另一个是每秒获取/设置250次,那么包含a的节点的stream量将是包含b的节点的两倍。
就我而言,我们有8个memcached节点,有几千个密钥。 其中一个关键是在峰值stream量下的速度达到800次/秒,几乎所有其他关键点的速度都不到1次/秒。 拥有繁忙密钥的memcached节点显示的stream量明显高于其他节点。
如果您想平衡每个memcached节点的stream量,那么您需要:
您确定与Memcached通信的前端已经正确同步了您的池的configuration条目吗?
所有的服务器都可以连接到连接问题较低的Memcached节点吗?
确保你已经打开了Memcached :: OPT_LIBKETAMA_COMPATIBLE。
关于configuration; 如果你正在存储大型对象,压缩/ igbinary会加快networkingI / O端的速度,这显然可能会有一个缺点,所以每种情况都是不同的。 标杆pipe理是关键。