内存队列
编辑内存队列编辑
默认情况下,Logstash 在管道阶段(输入 → 管道工作线程)之间使用内存中的有界队列来缓冲事件。如果 Logstash 遇到临时机器故障,内存队列的内容将会丢失。临时机器故障是指 Logstash 或其主机异常终止,但能够重新启动的情况。
内存队列大小编辑
内存队列大小不是直接配置的。相反,它取决于您如何调整 Logstash。
它的上限由 pipeline.workers
(默认值:CPU 数量)乘以 pipeline.batch.size
(默认值:125 个事件)定义。此值称为“正在处理的事件数”,它决定了每个内存队列中可以容纳的最大事件数。
将工作线程数或批处理大小加倍将有效地使内存队列的容量(和内存使用量)加倍。两者都加倍将使容量(和使用量)*翻两番*。
每个管道都有自己的队列。
有关调整 pipeline.batch.size
和 pipeline.workers
的效果的更多信息,请参阅调整和分析 Logstash 管道性能。
如果您需要吸收流量突发,请考虑改用持久化队列。持久化队列绑定到磁盘上分配的容量。
影响队列大小的设置编辑
这些值可以在 logstash.yml
和 pipelines.yml
中配置。
- pipeline.batch.size
- 从输入检索事件的数量,然后再发送到过滤器+工作线程 默认值为 125。
- pipelines.workers
- 将并行执行管道的过滤器+输出阶段的工作线程数。此值默认为主机 CPU 核心的数量。
背压编辑
当队列已满时,Logstash 会对输入施加背压,以阻止数据流入 Logstash。此机制有助于 Logstash 控制输入阶段的数据流速率,而不会使 Elasticsearch 等输出过载。
每个输入独立处理背压。