当前位置: 首页 > 编程日记 > 正文

如何对 Rocksdb以及类似存储引擎社区 提出 有效的性能问题?

性能 是rocksdb的优点,活跃的社区十分欢迎大家对各自使用rocksdb 过程中性能相关的疑惑点进行提问。提问的时候如果能够提供更多,更详细的信息 是可以增加快速得到恢复回复的概率。当然,性能是一个非常广泛且有巨量影响因素的话题,单纯从一个简单的描述是无法进行更进一步的性能问题讨论的。

社区从两方面给出了如下 性能相关issue的建议(当然有经验的同学这一些描述即可不用在意),这一些建议也是我们存储产品对内,对外展示性能的一个模版,个人觉得还是比较受用。

1. 问题描述

  1. 哪一种operation 性能较差?Get(), Put(), or Iterator ?

  2. 如果是其中一种workload,那么这个场景下的哪一项指标(qps , p50,p99,p9999…) 不满足你的预期?你的预期的指标是多少?

    • 吞吐: 如果是吞吐的问题,你使用的压测线程数是多少
    • 平均延时问题
    • 长尾延时问题
  3. 你使用的是哪一种存储介质?

    • SSD
    • HDD
    • RAID-…(0,1,10…)
    • ramfs/tmpfs
    • HDFS 或者 其他的远端存储

2. DB配置 和 DB状态 情况

  1. rocksdb启动情况:rocksdb实例的数量,多个还是单db? 每一个DB的大小?每一个DB实例使用了多少CF?

  2. 使用的rocksdb 版本

  3. 编译选项?如果使用的是make,可以直接将 make之后的 make_config.mk分享出来。如果无法提供全量的make_config.mk信息,则按照如下问题做一个回复:

    a. 哪一个平台 ? Linux, Windows, OS X, etc…/
    b. 使用的是哪一种分配器? jemalloc, tcmalloc, glibc malloc …?如果是 jemalloc, 可以在make_config.mk中看到JEMALLOC=1的选项。如果是tcmalloc,可以在PLATFORM_LDFLAGS 中找到 -ltcmalloc的编译选项。

    在这里插入图片描述
    c. 是否打开了 SSE指令支持的crc校验?如果有的话,这条信息会在rocksdb的LOG中打印,类似Fast CRC32 supported: 1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7ul6zlg-1605015582028)(/Users/zhanghuigui/Library/Application Support/typora-user-images/image-20201110183805822.png)]
    d. 是否支持 并打开了linux的 预分配选项fallocate
    可以通过查看PLATFORM_CXXFLAGS或者 PLATFORM_CCFLAGS选项 中是否包含DROCKSDB_FALLOCATE_PRESENT配置

  4. 你使用的rocksdb 配置。如果能够提供rocksdb的options file是最好的,一般这个文件会在你运行rocksdb相关应用的db目录中,以OPTIONS-xxx命名。或者 也能够将rocksdb LOG文件中的头部 拷贝出来。

    如果无法提供全量的配置文件,可以回复以下的关键配置即可(未设置,即是默认的配置):

    a. write_buffer_size – memtable的大小,默认64M
    b. level0_file_num_compaction_trigger – L0触发compaction的sst文件个数,默认4个
    c. target_file_size_base – sst文件大小,默认64M
    d. compression – 压缩算法,默认snappy
    e. compaction_style – compaction策略,默认 leveled
    f. 如果配置了leveled compaction 策略:

    • max_bytes_for_level_base – L1 的最大容量,默认256M
    • max_bytes_for_level_multiplier – 每一层大小的倍数,比如size(Ln) =size(Ln-1) * max_bytes_for_level_multiplier, 默认是10
    • level_compaction_synamic_level_bytes 是否开启动态调整每一层大小的配置

    g. 如果配置了 universal compaction策略:

    • size_ratio
    • max_size_amplification_percent

    h. block_cache_size block_cache 的大小
    i. Bloomfilter 相关的配置
    j. 其他并不 通用的配置,如果你更改了,也请贴上来。

  5. LSM-tree 结构情况
    一般可以通过应用程序中加入代码, DB::GetProperty(“rocksdb.stats”)。
    另一种方式 是可以通过命令ldb --manifest_dump指定db目录下的MANIFEST-xxx文件

  6. 当发生性能问题时 磁盘的IO情况。这里可以根据个人习惯进行io情况的统计, 一般使用iostat -xdt 1

  7. workload情况

    a. key + value size
    b. 读/写 百分比
    c. 如何删除数据
    d. 。。。

  8. 如果方便的话,分享一下对应的LOG文件,LOG文件一般在db目录之下,以LOG或者 LOG.old.xxx

  9. 硬件指标。如果没有办法给出精确的硬件数据,那么给出基本的内存 以及 CPU核数 的使用情况会比较方便,也很有用。

  10. 如果能够提供 复现问题的方法/代码 以及复现步骤,对社区精确解决性能问题会很有帮助。

相关文章:

我已经喜欢上了Python

早就听说了Python语言,今天试了试,挺喜欢她了。 Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32Type "copyright", "credits" or "license()" for more information.&g…

layui跳转html如何带参数,Layui跳转页面代码(可携带复杂参数)

今天用了Layui的“数据表格 - 数据操作”示例代码,结果发现点击“编辑”按钮出出来一个弹出消息框,效果如下:虽然说也可以用“弹出层”做编辑页面,但是,由于我编辑的东西很多,用“弹出层”不太理想。我就想…

java获取日期

/* * 获取昨天日期 方法一,这个方法好像有点慢 */Date dt new Date(); Calendar cal Calendar.getInstance();cal.add(Calendar.DATE, -1);time new SimpleDateFormat( "yyyy-MM-dd").format(cal.getTime()); /* * 获取昨天日期 方法二 */Date as ne…

DRF (Django REST framework) 中的视图类

视图说明 1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类。 APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是…

Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序

文章目录为什么要学习 go开发环境搭建 -- MAC运行第一个go程序go 函数的返回值设置go 函数的命令行参数为什么要学习 go 在如下几个应用场景的需求下产生了go: 超大规模分布式计算集群多核硬件的架构web模式下的大规模开发和频繁的进度更新 所以go 语言有如下几个特点&#…

html生成的超级链接预览功能,超链接特效

功能说明超链接特效功能是基于报表特殊效果功能的一种扩展实现。报表特殊效果功能的作用是为单元格添加一些特殊的显示效果。超链接特效可以给超链接添加特殊显示效果,实现超链接功能的扩展增强。当产品默认生成的超链接显示效果不能满足用户的个性化需求时&#xf…

ROOT android 原理。 基于(zergRush)

出自: http://bbs.gfan.com/android-2996211-1-1.html 须要ROOT的同学请去上面的地址下载。 a.控制手机创建个暂时目录,然后把zergRush脚本写入此目录,并改动此文件权限使之能够运行(这一步无需ROOT权限); adb shell rm -r /data/local/tmpadb shell mkdir /data/lo…

Oracle数据库日常维护知识总结

DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。首先要说的是,不同版本数据…

JAVA 第五周学习总结

20175304 2018-2019-2 《Java程序设计》第五周学习总结 教材学习内容总结 Java为什么要定义接口:接口的作用是实现多重继承,因为一个子类只能继承一个父类,但是可以实现一个或多个接口。使用关键字interface来定义一个接口,定义方…

Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异

文章目录1. Go 语言编写测试代码2. Go 的变量3. Go 常量定义1. Go 语言编写测试代码 源码文件以 _test结尾: xxx_test.go测试方法名需以Test开头: func TESTXXX(t *testing.T) {..} ,且参数列表直接用go 默认的test参数即可 如下first_test…

Scala:Functions and Closures

1 object Functions {2 def main(args: Array[String]) {3 // 本地函数4 def localFun(msg: String) println(msg)5 localFun("Hi")6 7 // 函数对象8 var list List(1, 2, 3)9 list.foreach((x: Int) > println(x)) 10 list.fore…

云计算机机房怎么样,如何知道云电脑配置多少?怎么选择云电脑机房?

一般在玩一款游戏时,需要考虑玩游戏的配置,云电脑帮助我们实现配置的需求,那如何才能知道云电脑配置是多少,该怎么选择云电脑机房。在使用云电脑时,我们不用考虑自己的手机、平板和电脑的硬件,只要设备能正…

eclipse中新建android项目,不自动生成R.java

http://huyuantai000.iteye.com/blog/1681582转载于:https://www.cnblogs.com/wmm3416/p/3386698.html

获取子iframe的属性

第一种方法&#xff1a; <iframe name"iframeName" src"http://www.test.com"></iframe> // name"iframeName" 取值 window.frames[iframeName] 第二种方法&#xff1a; <iframe id"iframeId" src"http://www.t…

Go: 分布式学习利器(3) -- Go的数据类型和运算符

文章目录1. Go的数据类型1.1 类型转化1.2 类型的预定义1.3 指针类型2. Go 的运算符1. Go的数据类型 GO的基本数据类型如下&#xff1a; bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte // 基本和uint8 类型一样 rune // 代表unicode …

云职教课堂计算机文化基础,2020智慧职教云课堂计算机文化基础答案最新最全单元测试答案...

参考答案如下智慧职教最新最全【判断题】两种气体在相同温度下放入同一个容器中,测得的压强分别为 和 ,则把它们同时放入容器中后的总压强为 .云课【单选题】根据物质的导电能力,将物质分为哪些类别?A. 导体 B. 半导体 C. 绝缘体 D. 以上都对堂计【单选题】按照数的进位制概念…

测试用例挑选策略

在软件开发过程中&#xff0c;无论是在feature testing还是在final regression testing中&#xff0c;测试策略的好坏在整个质量保证过程中起着至关重要的作用&#xff0c;尤其是在测试资源有限的情况下&#xff0c;影响更为突出。好的测试策略能够更快速的发现软件最有value的…

php json josn_decode()返回的是对像,如何把对像转成数组

php json josn_decode()返回的是对像&#xff0c;如何把对像转成数组 a.php传值页面&#xff0c;使用 json_encode($array)对数组进行加密码. b.php页面在接收a.php传过来的页面的值使用的是 json_decode($array),发现解密出来的数据是对象形式的&#xff1a; array(2) {[0]>…

【题解】黑格覆盖

题目描述 在一张由MN个小正方形格子组成的矩形纸张上&#xff0c;有k个格子被涂成了黑色。给你一张由mn个同样小正方形组成的矩形卡片&#xff0c;请问该卡片最多能一次性覆盖多少个黑格子&#xff1f; 输入输出格式 输入格式 输入共k1行&#xff1a; 第1行为5个整数M、N、m、n…

Go 分布式学习利器(4)-- 条件和循环

文章目录1. 循环语句2. 条件语句2.1 if...else 条件2.2 switch 条件1. 循环语句 Go语言和其他语言在循环语句上的主要差异是 Go语言仅支持for关键字。 语法形式&#xff1a;for i : 5; i > 0; i--,不像其他语言有两个小括号左右围着。 两种不同的循环体语法如下&#xff1…

php 对象的执行

1.BNF范式 %token T_OBJECT_OPERATOR "-> (T_OBJECT_OPERATOR)"unticked_statement: | expr ; { zend_do_free(&$1 TSRMLS_CC); }expr:r_variable { $$ $1; }| expr_without_variable { $$ $1; } ;r_variab…

golang不编译.html,golang之条件编译

Go语言能够经过go/build包里定义的tags和命名约定来让Go的包能够运行不一样的代码。html标签编译在源代码里添加标注&#xff0c;一般称之为编译标签(build tag)。编译标签采用靠近源代码文件顶部用注释的方式添加。go build在构建一个包的时候会读取这个包里的每一个源文件而且…

深入理解Struts2中的OGNL表达式

Struts 2中的表达式语言Struts 2支持以下几种表达式语言&#xff1a; OGNL&#xff08;Object-Graph Navigation Language&#xff09;&#xff0c;可以方便地操作对象属性的开源表达式语言&#xff1b; JSTL&#xff08;JSP Standard Tag Library&#xff09;&#xff0c;JSP …

[ZJOI2010]网络扩容

Description 给定一张有向图&#xff0c;每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。 求&#xff1a; 1、在不扩容的情况下&#xff0c;1到N的最大流&#xff1b; 2、将1到N的最大流增加K所需的最小扩容费用。 Input 第一行包含三个整数N,M,…

zookeeper -- Mac 上 Intellij IDEA 配置 zookeeper(3.5.8) 源码阅读、运行、调试环境

近期需要整理MIT6.824 中 分布式系统协调服务 zookeeper 的一些知识&#xff0c;想要在Mac 本地搭建一个可以方便运行调试的zookeeper环境&#xff0c;这玩意竟然耗费了一上午的时间&#xff0c;实在是不可忍&#xff1b;当然&#xff0c;主要还是因为对Java的编译运行环境 以及…

南昌大学计算机专业高数课本,南昌大学高等数学期末考试.pdf

南昌大学2008学年第二学期高等数学期末考试试卷( 3 15 )一、 填空题 每空 分&#xff0c;共 分        a 3i  j  2k, b i  2j  k, (2a)(3b)1.设 则 _____.2 2 2 22. 函数 z ln[(25 x  y )(x  y  4)]的定义域是_______________________…

金智教育CTO:大数据人才培养要先行一步

金智教育CTO、北航云计算硕士项目主任陈滢博士认为&#xff0c;虽然在中国&#xff0c;互联网行业已经有了比较多的大数据实践&#xff0c;而且像金融、电信等行业也确实感受到了大数据给业务带来的压力&#xff0c;但是从整个大数据市场来看&#xff0c;还是“雷声大、雨点小”…

[NOIP2015]子串

Luogu2679 /* 思路清晰&#xff1a; 1.状态 2.转移方程&#xff1a;哪些状态相互影响/记忆化搜索思想 3.循环顺序 4.优化*/ #include<bits/stdc.h>using namespace std;typedef long long LL;const int mod1e97; const int MAXN1005; const int MAXM205;char a[MAXN],b[M…

Go 分布式学习利器(5)-- 数组和切片

文章目录1. 数组的声明2. 数组元素的遍历3. 数组的截取4. Go 语言的切片5. 数组 和 切片的共同点1. 数组的声明 声明并初始化为默认的零值 var a [3]int声明同时初始化为指定的值 b : [3]int{1,2,3}多维数组初始化 c : [2][2]int{{1,2},{3,4}} 测试函数&#xff1a; func Te…

如何用计算机求锐角三角比,9.3用计算器求锐角三角比教学案

侨润中学教学案八年级数学学科第 6 周第 4 节总29 课时主备人唐云玲授课人上课时间2012年3月22 日课题9.3用计算器求锐角三角比(1)课型教学目标1、学会用计算器求任意角的三角函数值。2、培养学生熟练地使用现代化辅助计算手段的能力3、培养学生运用现代化仪器的思想&#xff0…