小编Any*_*Dev的帖子

在具有多个 LXC 的环境中启动服务时出现“错误:打开的文件太多”

环境:

我使用 CentOS-7 作为虚拟机管理程序,在libvirt. 每个容器都运行 CentOS-7 的最小安装以及精简的 FreePBX(Asterisk、Apache、MySQL + 位)。

症状:

有16个容器正在运行,没有任何问题。当我再次启动一个容器时,它确实会启动,但在第 17 个容器启动后,我无法systemctl start/restart/stop <anything>在任何容器中执行以下操作:

[root@test-lxc ~]# systemctl restart dnsmasq
Error: Too many open files
Run Code Online (Sandbox Code Playgroud)

诊断:

以下诊断和计数是在第 17 个 LXC 运行且systemctl restart blabla出现故障时完成的:

我可以 ssh 到任何 LXC 并运行最基本的命令,例如 ls 等。我怀疑该限制在某种程度上只影响systemd.

我试图理解我在哪里/为什么达到了极限。

[root@lxc-hypervisor]# sysctl fs.file-nr
fs.file-nr = 29616      0       12988463
Run Code Online (Sandbox Code Playgroud)

这没有经过调整,这只是默认安装的情况。与上述相同,最大(最后)值 = 12988463 由虚拟机管理程序报告,并且也在每个 LXC 内部。每个 LXC 中也报告了非常相似的第一个值,略低于 30000。

当我尝试计算每个 LXC 内所有进程的文件描述符时,我在每个 LXC 中得到的顺序是 400 ~ 500。

for pid in $( ls …
Run Code Online (Sandbox Code Playgroud)

linux lxc

9
推荐指数
1
解决办法
1083
查看次数

标签 统计

linux ×1

lxc ×1