如何在memcached客户端和服务器之间实现280qps?

时间:2012-04-18 02:46:49

标签: memcached spymemcached

我选择Spymemcached作为memcached java客户端,因为我发现没有回复的set方法似乎比其他memcached客户端快十倍。

我的代码:

  

memcachedClient.set(键,0,值);

而不是:

  

memcachedClient.set(键,0,值)获得();

我确实关心时间成本远远超过集合的结果。

现在看起来要快得多,但是很可能在memcached客户端上发生了内存泄漏。

当我在使用memcached服务器的同一台计算机上运行4时,它为每个memcached客户端进程执行大约2G内存的任务。 8核cpu和4G内存几乎完全消耗。本地网络接口'lo'仅为每秒0.2Gbits。

如何降低CPU和内存消耗率,甚至加快memcached qps。

我需要来自memcached客户端的280k qps,每个qps发送50B密钥长度和500B值长度的数据。现在我尝试在本地主机上启动memcached客户端,以避免网络接口带宽的限制。有四个memcahced进程,每个运行6个线程,现在我几乎可以实现180qps,这远离我的目标,cpu和内存变成了限制。而且我还需要在包含真正的java memcached客户端的同一台计算机上运行storm。所以我当然不能让memcached客户端占用核心资源。

如何减少CPU和内存消耗,或者如何在单台计算机和分布式memcached服务器上的几个java memcached客户端之间实现280qps。

获取和设置都占用了一半的查询。也许我可以尝试使用getMulti每次获取50个密钥。但问题仍然存在。

期待您的回复。谢谢!

1 个答案:

答案 0 :(得分:0)

您可能希望查看https://groups.google.com/forum/?fromgroups#!topic/memcached/n8zLJRyYNY4以使用memcached优化多次获取查询。