zoukankan      html  css  js  c++  java
  • tair ldb存储引擎性能測试方案

    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基測程序。

  • 相关阅读:
    在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
    线程的5种状态详解
    哈希表(Hash Table)原理及其实现 【转载】
    notify() 和 notifyAll() 有什么区别? wait()
    B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因 【转】
    pthread_join和pthread_detach的用法 【】转载】
    什么是进程?什么是线程
    进程间的五种通信方式介绍【转载】
    81. Search in Rotated Sorted Array II
    33. Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7147205.html
Copyright © 2011-2022 走看看