dot 快速的未来即将在您的城市举办的活动中到来。

加入我们参加 Redis 发布会

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

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

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

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