1. 性能測试环境
在单机环境(一台dataserver)和分布式环境(多台dataserver)下分别进行測试,或仅仅在分布式环境下进行測试。
2. 性能測试指标
主要考量两个指标
(1)服务端的极限QPS
(2)单个操作的响应时间rt
当然事实上还有其他不少指标,比如服务端的资源消耗情况、并发数等等。
3. 性能測试方法
主要针对tair ldb存储引擎在缓存了不同级别数据的前提下,加入了范围Bloomfilter支持的前后对 get_range接口測试的性能对照情况。
考虑到网络方面的负载。每次操作应该反复N次取个稳定值。详细流程初步设计例如以下:
(1)当dataserver数据库为空时,通过tairclient向dataserver服务端put一定量的数据。
(2)在(1)完毕后,以单线程通过tairclient进行get_range调用向dataserver获取数据,记录N次操作所消耗的时间。
(3)并发多个线程通过tairclient的get_range调用向dataserver获取数据,每一个线程完毕N次的操作。记录服务器的QPS大小、响应时间等。
(4)不断增大dataserver的存储数据量,反复进行(1)~(3)的測试,形成未加入范围Bloomfilter支持的性能測试报告。
(5)对tair ldb加入范围Bloomfilter支持后。再反复进行(1)~(4)的操作。终于形成两者的性能对照測试报告并做详细的分析。
4. 性能測试工具
单机下经常使用的性能測试工具有: GNU的gprof,IBM的PurifyPlus。Intel的VTune。AMD的CodeAnalyst,还有Linux下的OProfile/perf。对于这些工具能否应用到分布式系统中还不甚了解。专门针对分布式环境的性能測试工具,相关资料较少。仅仅看到一个基于Java的Jmeter。淘宝的DST。
我们的需求相对较简单,使用这些工具反而添加了其复杂性,因此我们决定自己写一个简单的性能測试工具,基本思路是调用tair client的api,启动多线程去压。然后记录一些压測结果。类似rocksdb/tools以下的db_stress.cc就是这样的思路。还有leveldb下的各个test測试也是值得參考的资料,比方db_bench.cc基測程序。