业务场景需要:
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系统(客户端或服务器)的任何建议?
还是能够更经济地满足要求的任何其他替代内存存储系统?
非常感谢提前!
答案 0 :(得分:1)
如果你看一下你所谈到的基准测试中的图表,你需要意识到在许多这些实例中,限制是网络而不是memcached。例如,如果您的所有项目都有2k值,那么GigE网络上的最大吞吐量大约为65k ops / sec。 (1024 * 1024 *二千○四十八分之一百二十八= 65536)。 Memcached每秒可以执行比这更多的操作。我个人达到200K操作/秒(我认为)512b值,我听说其他人的吞吐量比我高得多。这完全取决于网络。
此外,memcached几乎没有以10k ops / sec做任何事情。我的猜测是你的基准测试没有利用并发性。