Linux 操作系统与 .NET - 已达到配置的用户限制 (128) 所允许的 inotify 实例数
作者: travisgosselin创建于 2020年5月14日更新于 2026年9月18日
标签Help wanteddoc-enhancement
这个问题与 https://GitHub.com/dotnet/aspnetcore/issues/7531 直接相关,因为后者已被锁定。在 .NET Core 3.1 中,同样出现了这个问题。根据之前的线程,我可以在 Dockerfile 中指定不同的用户,以限制在将太多 Docker 容器放置在同一主机上时出现的问题,这些容器使用相同的用户 UID。我们的团队现在使用随机 UID 来确保每个不可变构建都有自己的 ID:
RUN useradd --uid $(shuf -i 2000-65000 -n 1) app
USER app这可以限制问题,但如果您打算在同一容器编排器主机上运行同一个不可变容器的 9 个或更多实例,问题仍然会继续。例如,如果我使用以下镜像:"FROM mcr.microsoft.com/dotnet/core/aspnet:3。"来运行一个基于默认的 / 空的 ASP.NET Core 应用程序,并使用以下 Program.cs(以及零配置文件的使用):
Host.CreateDefaultBuilder(args)
.ConfigureWebHost(builder =>
{
builder
.UseKestrel()
.UseStartup<Startup>();
});在上面的容器中运行默认应用程序,并连接您的 shell 并执行以下命令以计数观察者的数量:
apt-get install lsof
lsof | grep inotify
.NET Core 3.1 通常显示 15 或 16,而 .NET Core 2.1 的默认应用程序则显示更多,如 40。如果我运行 8 个容器,每个容器至少占用 15 个 128 限制的实例 - 我很快就会耗尽资源。内容来源: dotnet/AspNetCore.Docs