Fluent Bit 中文文档
  • Fluent Bit 中文文档
  • 关于
    • Fluent Bit 是什么?
    • Fluent Bit 简要历史
    • Fluentd & Fluent Bit
    • 协议
  • 概念
    • 核心概念
    • 缓冲
    • 数据管道
      • 输入
      • 解析器
      • 过滤器
      • 缓冲
      • 路由
      • 输出
  • 安装
    • 升级说明
    • 平台支持
    • 依赖
    • 源码安装
      • 下载源码
      • 构建和安装
      • 以静态配置构建
    • Linux 软件包
      • Amazon Linux
      • Redhat / CentOS
      • Debian
      • Ubuntu
      • 树莓派
    • Docker
    • Kubernetes
    • Windows
  • 管理
    • 配置 Fluent Bit
      • 格式与模式
      • 配置文件
      • 变量
      • 命令
      • 上游服务负载均衡
      • 单位
    • 安全性
    • 缓冲与存储
    • 积压
    • 调度与重试
    • 内存管理
    • 监控
    • 内部状态导出/信号
  • 数据管道
    • 输入插件
      • Dummy
      • Memory Metics
      • Standard Input
      • Systemd
      • tail
    • 解析器
      • JSON
      • Regular Expression
      • LTSV
      • Logfmt
    • 过滤器
      • Grep
      • Kubernetes
      • Rewrite Tag
      • Modify
      • Nest
    • 输出插件
      • Counter
      • Elasticsearch
      • File
      • FlowCounter
      • HTTP
      • Kafka
      • NULL
      • PostgreSQL
      • Standard Output
      • TCP & TLS
  • 流处理
    • 简介
    • 总览
    • 快速开始
      • Fluent Bit + SQL
      • Check Keys and NULL values
      • Hands On! 101
  • FLUENT BIT FOR DEVELOPERS
    • C Library API
    • 手动提取记录
    • Golang 输出插件
Powered by GitBook
On this page
  • 估算
  • Glibc 与内存碎片

Was this helpful?

  1. 管理

内存管理

Previous调度与重试Next监控

Last updated 4 years ago

Was this helpful?

在某些情况下,理想的方法是估计 Fluent Bit 可以使用多少内存,这对于必须限制内存的容器化环境非常有用。

为了进行估算,我们将假定输入插件已设置 Mem_Buf_Limit 选项(您可以在部分了解更多信息)。

估算

输入插件无限制地追加数据,因此为了进行估算,应通过 Mem_Buf_Limit 选项施加限制。如果限制设置为 10MB,我们需要估计在最坏的情况下,输出插件可能会使用 20MB。

Fluent Bit 具有用于处理数据的内部二进制表示形式,但是当此数据到达输出插件时,该插件可能会在新的内存缓冲区中创建自己的表示形式以进行处理。最好的例子是 和 输出插件,在与后端服务器通信之前,它们都需要将二进制表示形式转换为各自的自定义 JSON 格式。

因此,如果我们对输入插件施加 10MB 的限制,并考虑输出插件消耗 20MB 的最坏情况,则至少需要(30MB x 1.2=)36MB。

Glibc 与内存碎片

众所周知,在密集型环境中,内存分配按数量级进行,Glibc 提供的默认内存分配器可能会导致碎片过多,从而导致服务占用大量内存。

强烈建议在任何生产环境,都应启用 (如 -DFLB_JEMALLOC=On) 的情况下构建 Fluent Bit。Jemalloc 是一种替代的内存分配器,除其余功能外,它可以减少碎片,从而提高性能。

您可以如下命令检查 Fluent Bit 是否使用 Jemalloc 进行构建:

$ bin/fluent-bit -h|grep JEMALLOC

输出应该如下:

Build Flags =  JSMN_PARENT_LINKS JSMN_STRICT FLB_HAVE_TLS FLB_HAVE_SQLDB
FLB_HAVE_TRACE FLB_HAVE_FLUSH_LIBCO FLB_HAVE_VALGRIND FLB_HAVE_FORK
FLB_HAVE_PROXY_GO FLB_HAVE_JEMALLOC JEMALLOC_MANGLE FLB_HAVE_REGEX
FLB_HAVE_C_TLS FLB_HAVE_SETJMP FLB_HAVE_ACCEPT4 FLB_HAVE_INOTIFY

如果在构建标志中列出了 FLB_HAVE_JEMALLOC 选项,一切都会很好。

积压
InfluxDB
Elasticsearch
jemalloc