【问题标题】:How to implement 50M key-value pair memcache with 4 M qps?如何用 4M qps 实现 50M 键值对 memcache?
【发布时间】:2012-04-16 10:27:39
【问题描述】:

业务场景要求:

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 系统(客户端或服务器)有什么建议吗?

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

提前非常感谢!

【问题讨论】:

    标签: performance memcached benchmarking


    【解决方案1】:

    如果您查看您谈到的基准测试中的图表,您需要意识到在许多情况下,限制是网络而不是内存缓存。例如,如果您的所有项目都有 2k 值,那么您在 GigE 网络上的最大吞吐量约为 65k ops/sec。 (1024*1024*128/2048=65536)。 Memcached 每秒可以执行比这更多的操作。我个人用(我认为)512b 值达到了 200K ops/sec,而且我听说其他人的吞吐量比我高得多。不过,这在很大程度上取决于网络。

    此外,memcached 几乎没有以 10k ops/sec 的速度执行任何操作。我的猜测是您没有在基准测试中利用并发性。

    【讨论】:

    猜你喜欢
    • 2015-02-02
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多