sysbench 压测ob时, write only 场景 qps 波动大

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】4.1.0.0 CE
【问题描述】sysbench write only 场景, QPS 陡降 甚至为0
【复现路径】
【问题现象及影响】
图是采集sysbench 每秒的TPS(蓝色), QPS(橙色) 输出结果制作的.
image

下图是mysql 相同环境的测试 qps 平稳很多

诉求:
可能导致这个现象的原因是什么? 或者有什么排查方向?
是不是频繁冻结转储导致的

下图是memtable监控

【附件】

SELECT SVR_IP,SVR_PORT,TYPE,COMPACTION_SCN,START_TIME,FINISH_TIME FROM oceanbase.GV$OB_TABLET_COMPACTION_HISTORY where start_time > ‘时间点’ order by START_TIME desc;
先可以根据这个sql判断下,当qps陡降的时候,是不是触发了MINI_MINOR_MERGE等操作。
然后看下show parameters like “%memstore_limit_percentage%”; 这个参数大小

memstore_limit_percentage 默认值 20%
查了下时间段内没有MINI_MINOR_MERGE , 不过MINI_MERGE 有7k多次

sorry 修正下,是 4.1 版本 .
另外 MINI_MINOR_MERGE 是不是改成 MEDIUM_MERGE

MEDIUM_MERGE 有241次

你可以在qps都降的时候,查一下这张表,看下是不是在这个时间点,触发了MEDIUM_MERGE的转储
另外你测试的租户配置是多少核多少G内存,创建租户的时候primary_zone是怎么设定的,有没有按照官网的方式优化参数呢

租户配置:

create resource unit sysbench_unit max_cpu 26, memory_size '21g';
create resource pool sysbench_pool unit = 'sysbench_unit', unit_num = 1, zone_list=('zone1');
create tenant sysbench_tenant resource_pool_list=('sysbench_pool'), charset=utf8mb4, zone_list=('zone1'), primary_zone=RANDOM set variables ob_compatibility_mode='mysql', ob_tcp_invited_nodes='%';

参数的话没有修改,基本都是默认参数 .
这个现象是由于MEDIUM_MERGE 导致的么?
对比了性能图的陡降点和 MEDIUM_MERGE的start time 发现一定联系, 但不是完全吻合.
有什么方式能进一步验证这个问题呢?

这个目前可以判断应该是MEDIUM_MERGE导致性能降低,但一般情况下只有10%的影响,你这边环境会降到0吗?另外,可以看下在压测过程中,磁盘io_wait和cpu负载情况,io_wait比较高或者cpu负载较高的情况下,转储时对压测性能会影响更大,你的磁盘是SSD盘吗,日志和数据盘有没有分开

会降到0, oltp_write_only.lua 压测1h ,3600个点的qps 会有10个左右降为0.
另外数据和日志在一块盘上 , 测试过程能看到cpu负载较高 ,io wait的指标还没观测 , obagent 有io wait 指标公式么

如果有ocp或者普罗米修斯监控,可以看下监控的指标

磁盘是NVMe的.
测试过程通过 iostat 观测 iowait 基本在1%以下
cpu 使用率有两点突尖 ,整体在 50% 以下

另外 今天又测试了一次, 整个过程没有触发 MEDIUM_MERGE, 只有 minor merge 和 mini merge.
但是还是有qps 陡降的问题.

尝试根据下图进行参数调整 , 问题仍然存在


接下来我应该考虑什么排查方向

你观察其他的监控指标呢,在突然降到0的这一会,有没有啥异常,会不会是网络抖动什么的,另外这个陡降是周期性的,还是随机的呢

物理机的网络监控指标都是正常的,另外我测试的时候sysbench 和 数据库在一台主机,应该不会出现网络传输问题.

OceanBase Metric 的各项指标都观测了 , 看起来只有CPU使用率会出现抖动

OBserver是单节点,还是三节点的集群?如果三节点的集群,机器之间的网络会不会抖动?
陡降到0是周期性的还是偶发的

ob 是单节点 , 从图上来看好像没啥规律 :smiling_face_with_tear:

这个就不好说了,你换一台机器测试呢?有没有相同的问题

目前换了几台机器,各线程都跑过 还是会有这个问题
你们有测试过这个场景么, 观测整个过程qps的波动

我们有测的,但是没有出现像你这种情况,qps降到0的,你们机器是什么型号
另外把你测试的脚本发出来看下

有测试报告么?

测试脚本的话就是 oltp_write_only.lua run 一小时, 然后grep 每秒的qps tps 做的折线图

sysbench /usr/share/sysbench/oltp_write_only.lua --mysql-host=xx--mysql-port=xx --mysql-db=sysbenchdb --mysql-user="sysbench@sysbench_tenant"  --mysql-password=sysbench --tables=30 --table_size=1000000 --threads=128 --time=3600 --report-interval=1 --db-driver=mysql --db-ps-mode=disable --skip-trx=on --mysql-ignore-errors=6002,6004,4012,2013,4016,1062 run

机子型号是 PowerEdge R820

添加两个参数:–rand-type=uniform --auto-inc=on
把–skip-trx=on 这个参数去掉,然后再试下