oceanbase集群某个机器写入事件出现毛刺现象

oceanbase版本社区版4.2.1.4,obproxy版本使用4.2.1
某台机器出现io_write_time的毛刺现象,不定时出现写入时间过长,这个如何排查呢,

QPS、TPS、RT、memtable 内存 的对应时间段的监控图一并发一下,需要综合多个方面信息才能判断。

是要机器的还是集群的还是租户的呢

只要有都发,信息越全 越有助于判断。

如下所示,图1是主机监控,


图2、图3是ocp概览页面的一些参数。

可以用obdiag工具做一次信息收集:obdiag gather scene run --scene=observer.io

文档:OceanBase分布式数据库-海量数据 笔笔算数

从第一个图大概就知道了。总体 IO 很少,数据库的 QPS 也很低。因为 请求次数少,自然显得抖动有点大。 这种情形下偶尔的尖刺没有什么关系,分析的意义不大。
如果你做压测,IOPS 每秒能到几百,然后 IO 延时还经常有这种尖刺,那就是问题了。

这个不是偶发现象了,挺频繁的,我有6台机器,但是只有这一台机器是这样的,而且我查找gv$ob_sql_audit没有找到写入比较慢的语句。



2024-04-16 10:34:59,999 [INFO] gather scene variables: {‘observer_data_dir’: ‘/disk/nvme0n1/’, ‘obproxy_data_dir’: ‘’, ‘from_time’: ‘2024-04-16 10:04:59’, ‘to_time’: ‘2024-04-16 10:35:59’}
2024-04-16 10:35:00,000 [INFO] Use gather_pack_20240416103459 as pack dir.
2024-04-16 10:35:00,001 [ERROR] Invalid Task :observer.io
2024-04-16 10:35:00,002 [INFO] execute_tasks. the number of tasks is 0 ,tasks is dict_keys([]) 没有这个task,这个收集io的有参考吗

在大多数情况下,延迟是关注存储性能时最重要的单个指标。 对于硬盘驱动器,在10到20毫秒 之间的平均等待时间被认为是可以接受的(20毫秒是上限)。 对于固态驱动器,根据工作负载,它永远不应超过1-3毫秒。 在大多数情况下,工作负载的等待时间少于1ms。
io在20ms之内的可以是为正常

但是我的是ssd盘啊,会每搁几分钟出现毛刺,毛刺事件在10ms以内,但是又没有查到毛刺时间的写的语句,只有读的语句,这个怎么定位问题呢,主要是怕出现慢盘现象

用的是什么版本的obdiag ,另外安装的时候是不是少执行了一步:source /usr/local/oceanbase-diagnostic-tool/init.sh

直接obd deploy部署的,1.7.0版本

可以和正常的服务器的各项IO指标进行对比,如果除了延迟之外,其他io指标如iops,io队列深度指标都差不多,可以考虑是这台服务器的问题,再进行进一步的分析。

就是这台机器的io队列深度一直比较大,别的机器都很小,但是也没有发现什么写操作,下图1是本台机器的,图2是正常机器的。


看看两台机器的iops指标对比

图1有问题机器,图2没问题机器。


你这集群没啥负载吧
至于你说的单个机器的毛刺,那是因为只有那个机器上在特定的时间点写了点数据吧,量还不大

现在负载不大,我是3副本的,写的话不是只有那一台机器有毛刺,别的应该也有吧,而且我也没查到写的这么慢的语句

从图上可以看出来,写延迟和队列深度有关系,这两台服务器的写iops差距比队列深度的差距要大,可能和操作系统有关