dot Redis 8 已发布——它是开源的

了解更多

memtier_benchmark:Redis 和 Memcached 的高吞吐量基准测试工具

基准测试是衡量系统性能以确定其极限的做法。基准测试是我们服务开发过程中不可或缺的一部分,我们将其用于回归测试(验证版本之间性能没有下降)以及优化数据库性能。通常认为定期测量系统性能并在每次更改后进行测量是很好的做法,这样可以确保系统达到最佳性能并潜在地发现相关问题。为了方便执行这些基准测试运行,我们开发了我们自己的基准测试工具,我们亲切地称之为 memtier_benchmark。

该工具可用于针对 Memcached 和 Redis 实例生成各种流量模式。它提供了一整套强大的自定义和报告功能,所有这些都集成在一个方便易用的命令行界面中。我们在所有基准测试需求中广泛使用它,无论是在开发过程中还是为了帮助与更广泛的社区分享我们的知识(例如,我们在这篇博文中所做的那样)。我们已在 GPLv2 许可方案下发布了 memtier_benchmark 的源代码,您可以从我们的 github 帐户下载。以下是该工具的一些亮点。

  • 它支持 Redis 和 Memcached(二进制和文本)协议,因此您可以使用它来测试两者,甚至在不同场景下比较它们的性能
  • memtier_benchmark 能够启动多个工作线程(使用 -t 选项),每个线程驱动可配置数量的客户端(-c 选项)。多线程使您能够更好地利用基准测试客户端的硬件资源,即使使用单个服务器也能生成高流量负载。
  • 当您指示该工具执行多次基准测试运行迭代(-x 选项)时,它将自动生成最佳和最差运行以及汇总平均值的报告。
  • 您可以使用 ratio 选项控制 GETSET 操作之间的比率,以衡量处理不同访问模式时的性能。
  • 该工具可以控制 GET 和 SET 操作使用的键模式key-pattern 选项)。每个操作的模式可以独立设置为随机或顺序。
  • 键的过期时间可以是共同的,也可以从可配置的范围中随机设置(expiry-range 选项)。

有关这些以及该工具其他功能的更多信息,请参阅 memtier_benchmark 的使用说明(使用 help 开关打印)。请随时尝试并告诉我们您的想法。

Usage: memtier_benchmark [options]
A memcache/redis NoSQL traffic generator and performance benchmarking tool.

Connection and General Options:
  -s, --server=ADDR              Server address (default: localhost)
  -p, --port=PORT                Server port (default: 6379)
  -S, --unix-socket=SOCKET       UNIX Domain socket name (default: none)
  -P, --protocol=PROTOCOL        Protocol to use (default: redis).  Other
                                 supported protocols are memcache_text,
                                 memcache_binary.
  -x, --run-count=NUMBER         Number of full-test iterations to perform
  -D, --debug                    Print debug output
      --client-stats=FILE        Produce per-client stats file
      --out-file=FILE            Name of output file (default: stdout)
      --show-config              Print detailed configuration before running

Test Options:
  -n, --requests=NUMBER          Number of total requests per client (default: 10000)
  -c, --clients=NUMBER           Number of clients per thread (default: 50)
  -t, --threads=NUMBER           Number of threads (default: 4)
      --test-time=SECS           Number of seconds to run the test
      --ratio=RATIO              Set:Get ratio (default: 1:10)
      --pipeline=NUMBER          Number of concurrent pipelined requests (default: 1)
      --reconnect-interval=NUM   Number of requests after which re-connection is performed
      --multi-key-get=NUM        Enable multi-key get commands, up to NUM keys (default: 0)
  -a, --authenticate=PASSWORD    Authenticate to redis using PASSWORD
      --select-db=DB             DB number to select, when testing a redis server

Object Options:
  -d  --data-size=SIZE           Object data size (default: 32)
  -R  --random-data              Indicate that data should be randomized
      --data-size-range=RANGE    Use random-sized items in the specified range (min-max)
      --data-size-list=LIST      Use sizes from weight list (size1:weight1,..sizeN:weightN)
      --expiry-range=RANGE       Use random expiry values from the specified range

Imported Data Options:
      --data-import=FILE         Read object data from file
      --generate-keys            Generate keys for imported objects

Key Options:
      --key-prefix=PREFIX        Prefix for keys (default: memtier-)
      --key-minimum=NUMBER       Key ID minimum value (default: 0)
      --key-maximum=NUMBER       Key ID maximum value (default: 10000000)
      --key-pattern=PATTERN      Set:Get pattern (default: R:R)

      --help                     Display this help
      --version                  Display version information

编辑:在此处查看 memtier_benchmark 新版本的描述,其中包含伪随机数据、高斯访问模式和范围操作