如何提升DolphinDB流表的数据分发速度?

问题描述 投票:0回答:1

参数配置:workerNum=64;子执行器=32;最大内存大小=256; localExecutors=63.

在单进程部署中:

subscribeTable
函数指定过滤器参数为32个桶的哈希过滤。 DolphinDB 许可证有 64 个核心。

根据

getStreamingStat()
返回的pubTables表,bucket = 32时msgOffset的增长速度比bucket = 8时慢很多。从表subWorkers来看,数据分发速度完全赶不上数据处理速度。

在我的系统中,CPU使用率总是在短时间内达到多线程峰值。然后,系统等待所有子worker处理完毕(CPU占用率降至1%以下),然后再进行下一次数据分发。

而且,

getStreamingStat()
返回的subWorkers表表明大多数worker的queueDepth往往为0。数据分发速度慢导致交易后处理效率严重低下。

我的问题是:

数据分发缓慢的原因是什么?是因为流引擎的计算任务简单吗?

如何提高数据分发速度?

streaming performance-testing dolphindb
1个回答
0
投票

此问题已在服务器 1.30.23 / 2.00.11 中修复。对于早期版本,有两种方法:

添加一层订阅。使用

subscribeTable
函数订阅原始流表并将其写入中间表。然后,通过哈希过滤订阅中间表。

降低重播速度。配置参数 localSubscriberNum 以增加用于从发布队列分发消息的线程数。

© www.soinside.com 2019 - 2024. All rights reserved.