RocksDB 7 终于解决了 Compaction 时性能下降问题
R o c k s D B 社 区 提 到 在 7 . 5 . 3 版 本 在 修 复 C o m p a c t i o n 计 算 问 题 之 后 优 化 效 果 十 分 明 显 。 K v r o c k s 社 区 贡 献 者 @ z h a o x i a o b i a o 对 此 进 行 验 证 , 证 明 了 新 版 本 C o m p a c t i o n 过 程 写 入 性 能 的 确 很 平 稳 , 十 分 值 得 期 待 。
K v r o c k s 的 社 区 用 户 J u a n C r e s c e n t e 在 R o c k s D B 社 区 的 G o o g l e G r o u p 里 发 起 了 一 个 讨 论 : P e r f o r m a n c e o f c o m p a c t i o n s ( k v r o c k s ) [ 1 ] , 主 要 的 意 思 是 R o c k s D B 在 大 批 量 持 续 导 入 数 据 场 景 下 W r i t e S t a l l 会 导 致 服 务 不 可 用 :
R o c k s D B 社 区 的 M a r k 回 复 可 以 尝 试 7 . 5 . 3 版 本 , 该 版 本 大 大 优 化 了 C o m p a c t i o n 的 W r i t e S t a l l 时 间 , 具 体 如 下 :
K v r o c k s 社 区 的 贡 献 者 @ z h a o x i a o b i a o [ 2 ] 之 前 也 遇 到 过 类 似 的 问 题 , 对 于 该 优 化 十 分 感 兴 趣 , 尝 试 验 证 之 后 将 测 试 数 据 结 果 分 享 到 社 区 。 从 整 体 测 试 结 果 来 看 , R o c k s D B 7 . 7 . 3 的 C o m p a c t i o n 过 程 对 于 写 入 Q P S 和 延 时 基 本 没 有 影 响 , 而 对 比 组 的 R o c k s D B 6 . 2 9 . 5 在 C o m p a c t i o n 期 间 Q P S 会 几 乎 掉 到 0 。
带 来 这 个 优 化 的 主 要 原 因 是 R o c k s D B 7 . 5 . 3 修 复 了 一 个 C o m p a c t i o n P e n d i n g B y t e s 计 算 放 大 的 问 题 , 具 体 见 : r o c k s d b # i s s u e 9 4 2 3 [ 6 ]
测 试 环 境
分
别
使
用
R
o
c
k
s
D
B
6
.
2
9
.
5
/
7
.
7
.
3
编
译
K
v
r
o
c
k
s
,
然
后
按
照
如
下
图
部
署
测
试
环
境
:
其
中
V
M
-
A
和
V
M
-
B
配
置
都
为
:
-
C P U : 4 核 -
内 存 : 3 2 G i B -
磁 盘 : 8 9 0 G N V M E S S D
压
测
机
器
V
M
-
C
是
4
C
P
U
/
8
G
i
B
内
存
并
使
用
m
e
m
t
i
e
r
_
b
e
n
c
h
m
a
r
k
作
为
客
户
端
来
给
K
v
r
o
c
k
s
写
入
数
据
。
具 体 命 令 如 下 :
dockerrun-d--rmredislabs/memtier_benchmark:latest-t2-c20-s172.27.255.231-p6666--distinct-client-seed--key-minimum=100000000--key-maximum=10000000000--random-data--data-size=10000-n10000000000--command<span data-raw-text="" "="" data-textnode-index-1667281312502="36" data-index-1667281312502="1048" data-textnode-notemoji-index-1667281312502="1048" class="character">"set__key____data__<span data-raw-text="" "="" data-textnode-index-1667281312502="36" data-index-1667281312502="1069" data-textnode-notemoji-index-1667281312502="1069" class="character">"
其
中
m
e
m
t
i
e
r
_
b
e
n
c
h
m
a
r
k
的
-
c
-
t
参
数
是
多
次
实
验
后
,
综
合
吞
吐
量
和
超
时
后
选
定
的
最
优
解
。
同
时
设
置
了
定
时
任
务
,
每
隔
两
小
时
向
K
v
r
o
c
k
s
发
起
一
次
手
动
C
o
m
p
a
c
t
请
求
(
也
可
使
用
K
v
r
o
c
k
s
C
o
m
p
a
c
t
C
r
o
n
)
。
测 试 结 果
以
下
是
来
自
@
z
h
a
o
x
i
a
o
b
i
a
o
的
测
试
数
据
,
对
比
图
统
一
使
用
绿
色
线
表
示
R
o
c
k
s
D
B
6
.
x
(
6
.
2
9
.
5
)
,
使
用
黄
色
表
示
新
版
本
R
o
c
k
s
D
B
7
.
x
(
7
.
7
.
3
)
。
但
由
于
篇
幅
有
限
,
下
面
展
示
对
照
组
中
的
差
异
指
标
:
从 C P U 来 看 , C o m p a c t i o n 期 间 R o c k s D B 6 . x 波 动 范 围 比 较 大 , 波 谷 主 要 是 由 于 6 . x 的 C o m p a c t i o n 和 写 入 有 锁 竞 争 导 致 C P U 利 用 率 急 剧 下 降 , 而 7 . x 几 乎 没 有 波 动 。 同 时 , 最 后 一 段 时 间 停 掉 写 之 后 , 7 . x 的 C o m p a c t i o n 的 C P U 利 用 率 也 比 6 . x 少 4 0 % 左 右 。
从
O
P
S
的
对
比
来
看
,
R
o
c
k
s
D
B
6
.
x
的
O
P
S
波
谷
和
C
P
U
几
乎
是
一
致
的
,
C
o
m
p
a
c
t
i
o
n
期
间
可
能
会
几
乎
掉
到
0
,
而
7
.
x
则
是
十
分
稳
定
。
同
样
,
R
o
c
k
s
D
B
6
.
x
的
延
时
在
C
o
m
p
a
c
t
i
o
n
期
间
也
会
有
剧
烈
的
波
动
,
而
R
o
c
k
s
D
B
7
.
x
则
表
现
十
分
平
稳
,
甚
至
低
到
在
对
比
图
中
几
乎
看
不
到
。
为 了 可 以 更 清 楚 看 到 7 . x 的 延 时 情 况 , 下 图 把 R o c k s D B 6 . x 去 掉 , 可 以 看 到 新 版 本 的 延 时 几 乎 没 有 波 动 。
同
样
的
数
据
量
,
R
o
c
k
s
D
B
7
.
x
会
比
R
o
c
k
s
D
B
6
.
x
C
o
m
p
a
c
t
i
o
n
的
持
续
周
期
会
更
长
一
些
。
说
明
了
R
o
c
k
s
D
B
7
.
x
除
了
锁
优
化
之
外
,
也
将
后
台
的
C
o
m
p
a
c
t
i
o
n
相
关
的
周
期
拉
得
更
长
来
规
避
影
响
正
常
的
读
写
请
求
。
从
E
s
t
i
m
a
t
e
K
e
y
s
数
量
以
及
D
B
大
小
来
看
,
两
个
版
本
存
储
的
数
据
量
比
较
接
近
,
整
体
上
符
合
预
期
。
磁 盘 读 写 也 印 证 了 R o c k s D B 7 . X 在 C o m p a c t 策 略 上 会 比 6 . x 更 加 缓 和 , 从 本 次 测 试 结 果 来 看 几 乎 对 于 实 时 读 写 没 有 造 成 任 何 影 响 。
总 结
从 以 上 单 次 的 压 测 数 据 来 看 , R o c k s D B 7 . x 版 本 的 C o m p a c t i o n 几 乎 没 有 对 写 入 造 成 太 大 影 响 。 主 要 优 化 来 自 两 方 面 :
-
R o c k s D B 修 复 了 C o m p a c t i o n P e n d i n g B y t e s 计 算 放 大 问 题 导 致 长 时 间 W r i t e S t a l l 问 题 , 具 体 讨 论 见 : r o c k s d b # i s s u e 9 4 2 3 [ 6 ] -
减 少 了 C o m p a c t i o n 和 写 入 的 锁 竞 争 , 从 而 规 避 了 C o m p a c t i o n 期 间 阻 塞 写 入 问 题
其 实 在 更 早 之 前 @ a l e k s r a i d e n [ 3 ] 就 在 K v r o c k s 社 区 发 起 过 将 R o c k s D B 升 级 到 7 . x 的 讨 论 : C h a n g e R o c k s D B t o 7 . х ? [ 4 ] , 考 虑 到 稳 定 性 以 及 当 时 还 没 有 看 到 明 显 收 益 , 所 以 没 有 继 续 往 前 推 进 。 但 有 了 这 次 具 体 的 测 试 案 例 和 数 据 , 社 区 可 以 更 快 去 推 进 R o c k s D B 7 . x 在 K v r o c k s 的 落 地 。 目 前 @ z h a o x i a o b i a o 也 已 经 提 了 P R # 1 0 5 6 [ 5 ] , 欢 迎 更 多 用 户 的 测 试 和 反 馈 。
参 考 资 料
P e r f o r m a n c e o f c o m p a c t i o n s ( k v r o c k s ) : h t t p s : / / g r o u p s . g o o g l e . c o m / g / r o c k s d b / c / u m R P b o h a 0 a s / m / 5 V P 6 z v w i C g A J ? u t m _ m e d i u m = e m a i l & u t m _ s o u r c e = f o o t e r
[ 2 ]@ z h a o x i a o b i a o : h t t p s : / / g i t h u b . c o m / x i a o b i a o z h a o
[ 3 ]a l e k s r a i d e n : h t t p s : / / g i t h u b . c o m / a l e k s r a i d e n
[ 4 ]C h a n g e R o c k s D B t o 7 . х ? : h t t p s : / / g i t h u b . c o m / a p a c h e / i n c u b a t o r - k v r o c k s / d i s c u s s i o n s / 1 0 1 3
[ 5 ]P R # 1 0 5 6 : h t t p s : / / g i t h u b . c o m / a p a c h e / i n c u b a t o r - k v r o c k s / p u l l / 1 0 5 6
[ 6 ] r o c k s d b # i s s u e 9 4 2 3 : h t t p s : / / g i t h u b . c o m / f a c e b o o k / r o c k s d b / i s s u e s / 9 4 2 3
参考阅读:本文由高可用架构转载。技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。