【问题标题】:Redis Cluster mode slower than StandaloneRedis Cluster 模式比 Standalone 慢
【发布时间】:2015-07-22 12:06:51
【问题描述】:

我有一个由 3 个主节点版本 3.0.3 组成的 Redis 集群,托管在 3 个 EC2 t2.medium 实例上。当我坐在第四个实例上使用redis-benchmark 测量 SET、GET 性能时,我有

$ redis-benchmark -h redis-com-01 -p 6379 -t set,get -n 1000000
====== SET ======
...
33550.29 requests per second

====== GET ======
...
32353.04 requests per second

$ redis-benchmark -h redis-com-02 -p 6379 -t set,get -n 1000000
====== SET ======
...
36329.29 requests per second

====== GET ======
...
37199.61 requests per second

$ redis-benchmark -h redis-com-03 -p 6379 -t set,get -n 1000000
====== SET ======
...
32338.39 requests per second

====== GET ======
...
32169.86 requests per second

但是,当我使用来自https://github.com/Grokzen/redis-py-cluster 的基准工具simple.py 来测量整个集群的SET、GET 性能时,我对结果感到非常惊讶

$ python simple.py --host redis-com-03 --port 6379 --timeit
10k SET/GET operations took: 4.3375210762 seconds... 2305.46430192 operations per second
20k SET/GET operations took: 8.5704600811 seconds... 2333.59700772 operations per second
40k SET/GET operations took: 17.3284561634 seconds... 2308.34181781 operations per second

我已经按照清单http://redis.io/topics/latency 进行了操作。所有节点都配置了AOF,每秒fsync。 写入性能的差异对我来说是莫名其妙的。有人可以给我一个线索为什么以及是否可以解决这个问题?欢迎任何帮助。

【问题讨论】:

    标签: python amazon-ec2 redis cluster-computing database-performance


    【解决方案1】:

    AFAIK simple.py 只是一个忙的样子,不使用多线程来饱和服务器。现实情况是我们需要一个集群感知redis-benchmark,我需要尽快做到这一点......目前很难评估 Redis 集群的总体性能,但虽然不完全相同,但每个节点的性能是与独立节点非常相似。

    请注意,使redis-benchmark 线程化并能够同时测试多个节点只是第一步。为了测试大型基准,还需要在多个不同节点中并行运行基准并汇总结果。

    【讨论】:

    • 感谢您的建议,我刚刚尝试使用 64 个进程来强调此集群,总性能约为 42k ops/s。当我再添加 1 个节点来生成负载(始终使用 64 个进程/节点)时,总性能约为 75k ops/s。
    • 很好,您可能仍然没有看到完整的性能,因为 Python 中的 64 个进程会消耗大量 CPU 来执行而不是产生负载。我越早提供集群感知的redis-benchmark 越好。谢谢。
    【解决方案2】:

    我创建的那个脚本不是redis-benchmark能比的。该脚本的主要用途是对客户端代码进行简单的性能检查,以查看它在哪里使用的时间最多以及代码的慢速部分在哪里。

    如果我没记错的话,python 代码中的主要减速是对每个键进行的 crc16 计算。而且我认为与独立的 redis 节点相比,您应该会看到大约 50% 的性能下降,因为所有额外的工作都必须在客户端完成。

    【讨论】:

    • 感谢您的来信!
    • // ,很好的提示。看起来像一个好的 Python 基准测试者会从 pypi.python.org/pypi/crcmod 这样的东西中受益,然后,我猜。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2019-08-14
    • 1970-01-01
    • 2017-07-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多