基准测试是测量系统性能以识别其限制的做法。基准测试是我们服务开发过程不可或缺的一部分,我们将其用于回归测试(验证性能在版本之间没有降低)以及帮助优化数据库性能。通常认为,定期测量系统性能以及每次更改后都测量系统性能是良好的做法,以确保其达到最大性能,并可能发现相关问题。为了便于执行这些基准测试运行,我们开发了自己的基准测试工具,我们亲切地称之为 memtier_benchmark。
此工具可用于针对 Memcached 和 Redis 实例生成各种流量模式。它提供了一套强大的自定义和报告功能,全部封装在一个方便易用的命令行界面中。我们广泛地将其用于我们所有的基准测试需求,包括开发阶段以及帮助与更广泛的社区分享我们的知识(例如,正如我们在 这篇博文中所做的那样)。我们已在 GPLv2 许可方案下发布了 memtier_benchmark 源代码,您可以从 我们的 github 帐户下载它。以下是一些关于该工具的亮点。
有关这些功能和其他工具功能的更多信息,以下是 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