数据加工的服务性能与数据量、规则复杂度等因素有关。本文档介绍各种可能影响数据加工性能的因素,以便于排查数据加工过程中的加工性能问题。
性能影响因素
根据加工原理,数据加工任务的总体速率主要取决于以下因素:
- 目标日志主题写入速度:目标日志主题的 Shard 数量决定了数据的写入速度。
- 源日志主题加工并发度:源日志主题读写 Shard 数量决定了日志主题的整体加工并发能力。一般可以按照每 Shard 处理 1MiB/s(压缩前)流量规划。例如源日志主题的数据写入速度是 10MiB/s,那么需要分裂源日志主题的 Shard 数量为 10MiB/1MiB = 10 个。
- 加工规则复杂度:用户配置的加工规则逻辑和规则复杂度会影响数据加工速率。主要体现在以下方面:
影响因素 | 说明 |
---|
输出日志量 | 加工规则中可指定日志数据经由处理后输出的模式。输出的日志大小和数量会影响数据加工速率。
如果加工过程中涉及数据分裂,则输出事件字段越多、输出内容越长。因此导致输出的请求消耗更大的计算能力与网络带宽,最终导致数据加工的速度慢。 |
输出目标数量 | 加工规则中可指定加工后的数据分别投递至哪些目标端。输出的目标端数量越多,数据加工速率越慢。
输出的目标端越多,输出的数据包中日志组(LogGroup)越多,则导致网络交互越多、加工速度越慢。 |
加工逻辑 | 日志服务支持多种数据加工函数语法和逻辑。加工逻辑的复杂程度会影响数据加工速率。
配置的加工逻辑越复杂,日志服务计算能力消耗越大、处理速度越慢。 |
性能提升方式
除了降低加工规则的复杂度之外,您还可以通过修改日志主题配置来提升处理速度。
- 源日志主题:可以通过增加读写状态的 Shard 数量来增强日志服务数据加工功能的处理速度。
- 目标日志主题:
- 建议评估目标日志主题 Shard 数量,避免因目标日志主题的写入限制影响日志加工整体速率。目标日志主题的 Shard 数量主要由数据写入速率来评估。日志主题单个 Shard 的写入速率上限是 5 MiB/s,因此可以根据源日志主题的 Shard 数量,加工的并发数来估算目标日志主题 Shard 数。例如源日志主题有 10 个 Shard,那么目标日志主题至少有 2 个 Shard。
- 也可以开启目标日志主题的 Shard 自动分裂能力,在频繁触发写入限制的情况下自动分裂 Shard,关于 Shard 自动分裂请参见自动分裂 Shard。