内存管理

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

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

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

    Glibc 与内存碎片

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

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

    输出应该如下:

    1. Build Flags = JSMN_PARENT_LINKS JSMN_STRICT FLB_HAVE_TLS FLB_HAVE_SQLDB
    2. FLB_HAVE_PROXY_GO FLB_HAVE_JEMALLOC JEMALLOC_MANGLE FLB_HAVE_REGEX