Docker中使用systemctl命令时报Too many open files错误

0    685    3

Tags:

👉 本文共约1435个字,系统预计阅读时间或需6分钟。

自己的Docker环境

在docker的容器内使用systemctl启动服务时,报错:

这里不仅仅是mysql服务,任何服务使用systemctl启动都会报错,另外,这里绝对不是由于系统文件open-files达到最大数引起的。

查了好几天的原因,最后使用journalctl -xe命令查看日志,突然发现了一个不一样的错误:“inotify_init1() failed: Too many open files”

百度搜索“inotify_init1() failed: Too many open files”:

notify是linux提供的一种监控机制,可以监控文件系统的变化。该机制受到2个内核参数的影响:“fs.inotify.max_user_instances”和“fs.inotify.max_user_watches”,其中“fs.inotify.max_user_instances”表示每个用户最多可以创建的inotify instances数量上限,“fs.inotify.max_user_watches”表示每个用户同时可以添加的watch数目,当出现too many open files问题而上面三种方法都无法解决时,可以尝试通过修改这2个内核参数来生效。修改方法是修改"/etc/sysctl.conf"文件,并执行"sysctl -p"。

所以,解决很简单:

再 执行"sysctl -p"生效即可。

Too many open files的四种解决办法

1、单个进程打开文件句柄数过多

ulimit中的nofile表示单进程可以打开的最大文件句柄数,可以通过ulimit -a查看,子进程默认继承父进程的限制(注意,是继承,不是共享,子进程和父进程打开的文件句柄数是单独算的)。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复