banner
欢迎观看

日志报文件数超出系统限制问题

Scroll down

本文作者:丁辉

日志报文件数超出系统限制问题

遇到报错

failed to create fsnotify watcher: too many open files

解决方法

查看当前值

1
cat /proc/sys/fs/inotify/max_user_instances
  • 临时设置

    1
    sudo sysctl fs.inotify.max_user_instances=8192
  • 永久设置

    1
    2
    echo "fs.inotify.max_user_instances=8192" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p

脚本计算推荐值

  1. 下载脚本

    1
    wget https://gitee.com/offends/Kubernetes/raw/main/File/Shell/inotify-check.sh
  2. 执行脚本

    1
    bash inotify-check.sh

参数含义

参数 说明
fs.inotify.max_user_instances 每个用户(user)可以创建的 inotify 实例(watcher 的集合)最大数量
8192 将限制提升到 8192 个实例
  • inotify 是 Linux 提供的文件系统事件监控机制,应用程序可以用它来监控文件或目录的变化(创建、删除、修改等)。
  • 每个 inotify watcher 占用一个 inotify 实例的资源。
  • 默认值通常较小(如 128 或 1024),在日志收集、文件监控场景下容易不够用。

为什么要设置大一点

例如 Promtail、Fluentd、Filebeat 等日志收集工具,会 为每个被监控的日志文件创建 inotify watcher

  • 如果你的机器上有大量容器或日志文件:
    • 默认 max_user_instances 太小 → Promtail 会报错 failed to create fsnotify watcher: too many open files
  • 提升到 8192 或更高,可以允许单个用户(比如运行 Promtail 的 root 或容器内用户)创建更多 inotify watcher。

推荐值

  • 一般桌面用户:512-1024
  • 开发环境:1024-2048
  • 运行多容器/监控服务:2048-8192
  • 服务器/特殊情况:16384 或更高

要是这篇文章为您解了惑、带来了帮助,不妨用小小的打赏来支持下我的创作吧,您的鼓励就是我持续分享的最大动力哦,感谢您啦!

其他文章
cover
Kubernetes容器启动报打开的文件数过多
  • 70/01/01
  • 00:00
  • Kubernetes-问题记录
cover
本地无法访问Service网络
  • 70/01/01
  • 00:00
  • Kubernetes-问题记录
目录导航 置顶
  1. 1. 日志报文件数超出系统限制问题
    1. 1.1. 遇到报错
    2. 1.2. 解决方法
    3. 1.3. 脚本计算推荐值
      1. 1.3.1. 参数含义
      2. 1.3.2. 为什么要设置大一点
      3. 1.3.3. 推荐值
请输入关键词进行搜索