Failed to allocate directory watch: Too many open files

在ubuntu上运行service服务报错:

Failed to allocate directory watch: Too many open files

解决方法:

vim /etc/sysctl.conf
fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144

生效

sysctl -p

分析:

可能是 inotify 数量限制了,修改后服务可以正常启动

inotify介绍:

它是一个内核用于通知用户空间程序文件系统变化的机制。
众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,udev 动态地维护 /dev 下的设备文件,inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知,该机制是著名的桌面搜索引擎项目 beagle 引入的,并在 Gamin 等项目中被应用。

查看inotify参数

sysctl fs.inotify

查看已经使用的inotify数量,使用脚本inotify-consumers

你可能感兴趣的:(Linux)