基准测试是衡量系统性能以确定其极限的做法。基准测试是我们服务开发过程中不可或缺的一部分,我们将其用于回归测试(验证版本之间性能没有下降)以及优化数据库性能。通常认为定期测量系统性能并在每次更改后进行测量是很好的做法,这样可以确保系统达到最佳性能并潜在地发现相关问题。为了方便执行这些基准测试运行,我们开发了我们自己的基准测试工具,我们亲切地称之为 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
编辑:在此处查看 memtier_benchmark 新版本的描述,其中包含伪随机数据、高斯访问模式和范围操作。