如何用4 M qps实现50M键值对memcache?

时间:2012-04-16 10:27:39

标签: performance memcached benchmarking

业务场景需要:

50M键值对,每个2K,总共100G内存。

大约40%的键值会在一秒钟内发生变化。

Java应用程序需要Get()一次并为每个更改的对设置一次(),它将是50M * 40%* 2 = 4M qps(每秒查询数)。

我们测试了memcached - 显示了非常有限的qps 我们的基准测试与此处显示的结果非常相似 http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html

10,000左右的qps是一个memcached服务器的限制。

这意味着我们在业务场景中需要40个分区的memcached服务器 - 这看起来非常不经济且不切实际。

根据您的经验,基于memcached的设计性能,基准测试是否准确?

调整memcached系统(客户端或服务器)的任何建议?

还是能够更经济地满足要求的任何其他替代内存存储系统?

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

如果你看一下你所谈到的基准测试中的图表,你需要意识到在许多这些实例中,限制是网络而不是memcached。例如,如果您的所有项目都有2k值,那么GigE网络上的最大吞吐量大约为65k ops / sec。 (1024 * 1024 *二千○四十八分之一百二十八= 65536)。 Memcached每秒可以执行比这更多的操作。我个人达到200K操作/秒(我认为)512b值,我听说其他人的吞吐量比我高得多。这完全取决于网络。

此外,memcached几乎没有以10k ops / sec做任何事情。我的猜测是你的基准测试没有利用并发性。