【容器日志采集】【踩坑】【1】<jemalloc>: Unsupported system page size

🧱 Fluent Bit jemalloc 踩坑记录(鲲鹏 / 麒麟环境)

📌 问题背景

  • 硬件:Kunpeng 920(aarch64)
  • 系统:KylinOS
  • 镜像ghcr.m.daocloud.io/openinsight-proj/fluent-bit:4.0.1
  • 报错
<jemalloc>: Unsupported system page size
Aborted (core dumped)

👉 原因:Fluent Bit 官方镜像默认开启 jemalloc,要求系统 pagesize = 4096,而麒麟环境通常为 65536(64K),不兼容。


🧪 1. 确认系统 pagesize

getconf PAGESIZE

输出:

65536

⚠️ 如果不是 4096,就不能直接使用开启 jemalloc 的官方镜像。


✅ 2. 解决方案

方案一:使用社区镜像(已关闭 jemalloc)

直接使用编译时关闭 jemalloc 的社区镜像👇

#增加仓库
registry-mirrors": [
    "https://ghcr.m.daocloud.io"
]
#拉取镜像
docker pull ghcr.m.daocloud.io/openinsight-proj/fluent-bit:4.0.1

💡 我目前只验证过 4.0.1 这个版本可用,其他版本可根据实际情况自行查找测试。


方案二:关闭 jemalloc 并自行编译

自行拉取源码并关闭 jemalloc:

git clone https://github.com/fluent/fluent-bit.git
cd fluent-bit
git checkout v4.0.1
mkdir build && cd build
cmake -DFLB_JEMALLOC=Off ..
make -j$(nproc)
docker build -t fluent-bit-arm64:4.0.1 .

在 K8s 配置中不需要额外设置 jemalloc 变量,直接使用自编译镜像即可 ✅


📝 小结

项目 官方镜像 麒麟环境
jemalloc 需求 4096 page 65536 page(不兼容)
解决方式一 自行编译关闭 jemalloc ✅ 推荐
解决方式二 使用社区已编译镜像(2.0.5) ✅ 可直接用
其他版本 未测试 需自行验证

✅ 一句话总结:

如果 getconf PAGESIZE 不是 4096 → 关闭 jemalloc使用社区关闭 jemalloc 的版本 🚀

posted @ 2025-10-19 19:11  怪糟糟的人  阅读(378)  评论(0)    收藏  举报