You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Telegraf Docker容器中提升最大锁定内存限制?

如何在Telegraf Docker容器中提升最大锁定内存限制?

我来帮你搞定这个Telegraf容器的内存锁定限制问题!你遇到的panic和权限问题,本质是Docker ulimit配置格式不对,加上Telegraf依赖的memguard库对内存锁定的严格要求导致的,下面一步步解决:

1. 修正Docker Compose中的Ulimit配置

你之前只写了memlock: 112是错误的——Docker要求memlock必须同时指定软限制硬限制(两个数值),只给单个值会导致配置解析失败,进而触发memguard库的初始化panic。

把你的Telegraf服务块里的ulimits改成下面的格式,我们直接设置成128KB(131072字节,比提示要求的112KB多留些余量):

telegraf:
  image: telegraf:1.26.3
  container_name: telegraf
  # ... 其他配置(depends_on、hostname、volumes等保持不变) ...
  ulimits:
    memlock:
      soft: 131072
      hard: 131072
  # ... 其他配置(networks、restart、labels等保持不变) ...

2. 检查宿主机的内存锁定限制(必要时调整)

容器的ulimit硬限制不能超过宿主机的对应限制,所以如果上面的配置还是生效不了,先在宿主机上检查当前的memlock硬限制:

ulimit -l -H

如果宿主机的硬限制小于你给容器设置的131072,需要调整宿主机的配置:

  • 编辑/etc/security/limits.conf文件,添加以下内容:
* soft memlock unlimited
* hard memlock unlimited
  • 重启宿主机(或者重新登录会话)让配置生效,之后容器就能使用更高的memlock限制了。

3. 验证配置是否生效

重启Telegraf容器后,进入容器内执行以下命令,确认最大锁定内存已经更新:

docker exec -it telegraf ulimit -l

如果输出是131072(或者你设置的数值),再看容器启动日志,那个“Insufficient lockable memory”的警告应该就消失了。

备注:内容来源于stack exchange,提问作者Babasile

火山引擎 最新活动