compact时查询超时

提问参考模版:

  • nebula 版本:v2.6.1
  • 部署方式:分布式
  • 安装方式:RPM
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD)ssd
    • CPU、内存信息: 16核, 128G
  • 问题的具体描述
    夜间做的定时全量compact 任务,最近发现compact 时会疯狂告警,指标如下:

nebula_storaged_add_vertices_latency_us_avg_60 > 100000 
nebula_graphd_num_slow_queries_rate_60 > 60          graph 服务端慢查询次数超过60次
nebula_graphd_slow_query_latency_us_avg_60 >900000   graph 服务端慢查询延迟超过900ms
nebula_graphd_slow_query_latency_us_p95_60 >1000000  graph 服务端慢查询p95耗时超过1s

尝试把nebula-storaged.conf 中的参数限制为20 m/s

--rocksdb_rate_limit=20

还是没有作用,疯狂告警。
请问这个情况有没有办法改善下?

您好,请问报警报出来的是什么错呢?谢谢

没有报错。就是这几个指标比较慢。服务端慢查询p95耗时超过1s 等指标。

【故障】: 图数据库备集群graph服务端慢查询延迟过高 
告警详情:  集群: nebula-2-backup,节点: nebula-backup-01,graph服务端慢查询延迟超过900ms,请及时关注! 
当前值:  6.0030607e+07 
故障时间:  2022-03-20 08:01:55 +08:00 

【故障】: 图数据库storage添加点延迟过高 
告警详情:  集群: nebula-2-backup,节点: nebula-backup-01,storage添加点延迟超过10ms请及时关注! 
当前值:  5.3205189e+07 
故障时间:  2022-03-20 08:02:07 +08:00 

比如下面的例子 慢查询告警变多了。

我看这个报警时间是早上 08:02 这时候还在做Compaction 吗? 另:rocksdb 中数据量大概是多大?

对,之前需要2h 我看磁盘IO 几百兆/s。
现在因为我调了–rocksdb_rate_limit=20 需要8h 左右。
这个space 大概点8亿, 边30亿

Larger value can lead to burstier writes while smaller value introduces more CPU overhead.

我找到了这样一句话 20M 是不是设置的比较小了,难道token bucket 是自旋的?

我看到咱们官方的文档上建议的可以调成20,现在要调大一点试试吗?
还有其他方法试试吗

可以调大一些 比如改为 40 试一下

另外,做compact的时候有没有flush 操作呢?

1 个赞

flush 操作指的是什么?

flush 操作指的哪些?

Memtable flush 到磁盘 生成SST文件

这个不确定,这个时间会有正常的读写操作。不过感觉和这个关系应该不大。
因为这个compact 每次都会告警,除非每次也伴随了flush

@Reid00 试试这个操作呢。

收到,目前刚执行过定时的compact 我昨天改了之后,确实没有报错,但是也有可能是增量的数据不多的缘故,过两天我再看看定时job 的情况。

1 个赞

嗯 可以在跟踪一下 谢谢

昨天的job 正常再跑,没有告警了。非常感谢!

1 个赞

好的 感谢您的反馈 谢谢

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。