Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MemcacheD导致Web服务速度减慢_C#_Web Services_Memcached - Fatal编程技术网

C# MemcacheD导致Web服务速度减慢

C# MemcacheD导致Web服务速度减慢,c#,web-services,memcached,C#,Web Services,Memcached,我有两个web服务,它们使用MemcacheD来存储常见数据库查询的结果。这两个服务都在三个负载平衡的web服务器上运行,MemcacheD也是如此,而且性能良好。然而,每两周一次web服务的CPU使用率就会从正常的5%增加到20%。我发现,如果我重新启动Memcache,那么问题就会迎刃而解。这个特定的web服务更多地使用MemCacheD并存储更大的对象 我不认为问题出在我的web服务(我知道的最后一句名言)上,因为在重新启动Memcache之后,CPU和内存使用率会稳定下来,并保持几天 我

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


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

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

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