MemcacheD导致Web服务速度减慢

本文关键字:速度 服务 导致 Web MemcacheD | 更新日期: 2023-09-27 18:24:57

我有两个web服务,它们使用MemcacheD来存储常见数据库查询的结果。这两个服务都运行在三个负载平衡的web服务器上,MemcacheD也是如此,并且性能良好。然而,每两周就会有一个web服务的CPU使用率从正常的5%增加到20%。我发现,如果重新启动Memcache,问题就会迎刃而解。这个特殊的web服务更多地使用MemCacheD并存储更大的对象

我不认为问题出在我的web服务上(我知道的著名的遗言),因为在重新启动Memcache后,CPU和内存使用率会稳定下来,并保持几天。

我认为Memcache可能存在问题,无论是我对它的使用还是我设置它的方式。如果非要我猜测的话,我会说问题是"颠簸",因为我的web服务必须等待从Memcache获取对象。

可能是我的Memcache版本太旧了(我从这里得到的),或者我没有给它足够的内存。每个实例当前分配128 MB。是不是太低了?有什么工具可以用来衡量Memcache的性能吗?

编辑

我已经将分配的内存增加到500MB,发现只有一个Memcache实例需要重新启动。这表明问题不在于Memcache,而在于我使用其中一个特定对象的方式。我希望尽快解决这个问题。如果这有什么不同的话,我会发布这个问题的答案。

MemcacheD导致Web服务速度减慢

我在MemcacheD中存储两种类型的数据:一种是性质类似于"瑞士首都是什么"的纯信息,另一种是用作内存存储的列表。正是后者造成了这个问题。其中一份名单没有被清除,因此不断增加。这就是为什么重新启动似乎有效,因为列表现在为空。

MemcacheD不会自动删除超过"到期"日期的项目。它将在需要时删除过期项目。因此,此列表从未被删除。当MemcacheD存储项目时,它会将它们存储在"页面"上。这些页面将大小相似的项目组合在一起。因此,将有一个用于16KB项目,另一个用于32KB项目,依此类推。显然,随着列表的不断增长,这也会使MemcacheD的工作变得更加困难。