Proxmox多LXC容器无法分配目录变化通知问题解决
今日Kaijia的Proxmox集群中有一台服务器异常不稳定,经常丢失状态,并且在执行任何操作时常常遇到错误提示:
Failed to allocate directory watch: Too many open files
检查了一下这台服务器上运行的LXC容器有30多个,当中不乏数据库、MongoDB、DA及爬虫等IO大户,然而利用lsof查看了一下当前使用的文件句柄亦无发现任何异常。
查阅了Proxmox官方论坛后发现也有高用量用户碰到过此问题,官方给出的提示是LXC容器消耗Linux内核的文件系统变化通知机制inotify,而默认安装的Proxmox OS系统设定的inotify数量限制是128,过多LXC容器,尤其是IO大户,同时运行时必然会耗尽inotify。
因此问题的解决方案自然是提高inotify,短期的可以执行:
1 |
sysctl fs.inotify.max_user_instances=512 |
长期维护建议将此项及下述其他配置添加到/etc/sysctl.conf中:
1 2 |
fs.inotify.max_user_instances=512 fs.inotify.max_user_watches=262144 |
上述参数将现有inotify容量扩大4倍(如为LXC数量为托管运行商级别可以继续扩大至16倍)。然后执行:
1 |
sysctl -p |
使之生效即可。
评论