批处理器
APISIX 批处理器会先将日志和指标等条目组成批次,再由插件将其发送到目标。在正常负载下,批处理可以减少网络操作次数;有界的待处理条目队列则可避免目标不可用时无限占用工作进程内存。
使用通用批处理器的插件会在配置中公开批处理参数。通过批处理器管理器集成的插件还会在其元数据中公开 max_pending_entries。error-log-logger 插件直接使用批处理器,不会公开此积压限制。
配置批次投递
以下参数用于控制 APISIX 发送批次的时机以及处理投递失败的方式。表中列出大多数使用此处理器的插件所采用的默认值;如有例外,请查阅相应插件的配置参考。
| 参数 | 默认值 | 描述 |
|---|---|---|
batch_max_size | 1000(lago 为 100) | 单个批次中的最大条目数。值为 1 时,每个条目都会立即发送。 |
inactive_timeout | 5(error-log-logger 为 3) | 在发送当前批次前,等待下一个条目的最长时间(秒)。此值应小于 buffer_duration。 |
buffer_duration | 60 | 在 APISIX 发送批次前,最早条目允许存在的最长时间(秒)。 |
max_retry_count | 0 | 投递失败后的最大重试次数。超过重试上限时,APISIX 会丢弃受影响的条目。 |
retry_delay | 1 | 投递失败后再次重试前的延迟时间(秒)。 |
实际批次大小取决于目标和插件。例如,目标可能对请求正文或消息大小设有限制。请选择合适的 batch_max_size,确保序列化后的批次不超过该限制。