cdc 日志qps为0

【 使用环境 】测试环境
【 OB or 其他组件 】
obcdc4.1

【问题描述】
想要看下cdc拉取增量数据的fetch阶段的性能指标

操作
根据cdc 参数print_fetcher_slowest_ls_num=10,来看下对应的结果,检查日志


print_fetch_progress (ob_log_ls_fetch_ctx.cpp:1434) [1699][][T0][Y0-0000000000000000-0-0] [lt=11] [STAT] slow fetch progress idx=0/3 tls_id={tenant_id:1, ls_id:{id:1}} mod=["172.32.0.2:22887"](0x7f2f3660faa0) discarded=0 delay=[00:02:57.692449] tps=0.00 progress={next_lsn:{lsn:392480766}, log_progress:"[2024-04-11 03:21:49.025347]", log_touch_tstamp:"[2024-04-11 03:21:49.072856]"}

通过压测等方式,发现tps的结果一直为0.00,这个是正常的吗。如果不是,是观测的日志不对,还是有其他参数需要配置

这里tps 为0 应该是因为这是系统租户,系统租户是不支持的。

grep “traffic” libobcdc.log 看下

结果

[2024-04-18 14:09:05.551931] INFO  [TLOG.FETCHER] do_stat (ob_log_ls_fetch_stream.cpp:299) [32743][][T0][Y0-0000000000000000-0-0] [lt=20] [STAT] [FETCH_STREAM] stream="xxxxx:22882"(0x7f672660faa0:HOT)({tenant_id:1002, ls_id:{id:1001}})(FETCHED_LOG:278.31MB) traffic=2.46MB/sec size/rpc=34.23KB log_cnt/rpc=10 rpc_cnt/sec=73 single_rpc/sec=73(upper_limit=0,max_log=73,no_log=0,max_result=0) rpc_time=814 svr_time=(queue=641,process=280) net_time=(l2s=-457,s2l=323) cb_time=27 handle_rpc_time=620 flush_time=77 read_log_time=534(log_entry=24,trans=0) trans_count=0 trans_size=0.00B

这个就是cdc fetch阶段计算的地方是吗

不是系统租户貌似也没有

[2024-04-18 14:09:25.557536] INFO  [TLOG.FETCHER] print_fetch_progress (ob_log_ls_fetch_ctx.cpp:1434) [32743][][T0][Y0-0000000000000000-0-0] [lt=28] [STAT] slow fetch progress idx=1/3 tls_id={tenant_id:1002, ls_id:{id:1001}} mod=["xxxx:22882"](0x7f672660faa0) discarded=0 delay=[00:03:12.918019] tps=0.00 progress={next_lsn:{lsn:18246817894}, log_progress:"[2024-04-18 14:09:25.364531]", log_touch_tstamp:"[2024-04-18 14:09:25.529348]"}

对的

这个是日志流级别的统计,而且是统计的最慢的10个(print_fetcher_slowest_ls_num=10)。并不是整个fetcher的统计。

日志

[2024-04-18 14:17:33.668980] INFO  [TLOG] print_stat_info (ob_log_trans_ctx_mgr.cpp:287) [32745][][T0][Y0-0000000000000000-0-0] [lt=8] [STAT] [PERF] CREATE_TRANS_TPS=1809.464 SEQ_TRANS_TPS=1616.630 CREATE_TRANS_COUNT=18129 SEQ_TRANS_COUNT=16197

问题1:
这里的日志我看到记录了tps的值和事务的数量,这里统计的是哪一个阶段的内容

问题2:
b_log_ls_fetch_stream.cpp:299,打印了很多内容,并没有tps等的概念,这个阶段主要统计的是什么

ps:
对于我们来说,性能指标会相对更关注tps这些参数

  1. 这里是开始处理事务的TPS。

  2. fetcher 和 observer 进行 rpc请求相关的统计。

上述的统计都是比较偏内部的统计项,主要用来排查问题的。

  1. 用户层面建议关注 NEXT_RECORD_TPS 这个统计项,是指外部程序调用 cdc next_record 接口的TPS。
2 个赞