открыто слишком много дескрипторов файлов. net Core 3.1 на docker AWS - PullRequest
0 голосов
/ 27 мая 2020

Недавно мы попытались перенести базовое приложение. net на aws ecs. но у нас было много проблем, через некоторое время контейнер остановился, потому что стек tcp был заполнен. Мы обновили наш способ выполнения запросов с помощью HttpClientFactory, мы попробовали множество альтернатив, но безуспешно. Мы заметили, что в контейнерах используется много файловых дескрипторов. Когда контейнер умирает, он имеет около 150 тыс. Файловых дескрипторов. Похоже, что каждый отдельный поток, который был порожден (например, для httpRequest), загружает в память все текущие библиотеки, требуемые приложением.

, и это выглядит примерно так:

dotnet    22035           root  mem       REG              259,1               402514 /app/pt-BR/Ubisoft.Connect2.Services.Lib.resources.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               402510 /app/nl/Ubisoft.Connect2.Services.Lib.resources.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267308 /app/Microsoft.Bcl.AsyncInterfaces.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267304 /app/Microsoft.AspNetCore.WebUtilities.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267473 /app/cs/Ubisoft.Connect2.Services.Lib.resources.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               131880 /usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/mscorlib.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267444 /app/System.Web.Http.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267248 /app/Microsoft.AspNetCore.Diagnostics.Abstractions.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267255 /app/Microsoft.AspNetCore.Html.Abstractions.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267381 /app/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267385 /app/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267410 /app/StackExchange.Redis.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267257 /app/Microsoft.AspNetCore.Http.Extensions.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               402535 /app/runtimes/linux-x64/native/libuv.so (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267286 /app/Microsoft.AspNetCore.Razor.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267350 /app/Microsoft.Extensions.Hosting.Abstractions.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267436 /app/System.ServiceModel.Http.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267346 /app/Microsoft.Extensions.FileProviders.Composite.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267302 /app/Microsoft.AspNetCore.StaticFiles.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267264 /app/Microsoft.AspNetCore.JsonPatch.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1              1840740 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2 (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               131831 /usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.8/System.Security.Cryptography.Native.OpenSsl.so (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267429 /app/System.Runtime.CompilerServices.Unsafe.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               402550 /app/runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267377 /app/Microsoft.Net.Http.Headers.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267311 /app/Microsoft.CodeAnalysis.Razor.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267276 /app/Microsoft.AspNetCore.Mvc.Razor.Extensions.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267284 /app/Microsoft.AspNetCore.Razor.Language.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267313 /app/Microsoft.CodeAnalysis.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267244 /app/Microsoft.AspNetCore.DataProtection.Abstractions.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267242 /app/Microsoft.AspNetCore.Cryptography.Internal.dll (stat: No such file or directory)
dotnet    22035           root  mem       REG              259,1               267369 /app/Microsoft.Extensions.WebEncoders.dll (stat: No such file or directory)

и имена файлов повторяются тысячу раз, снова и снова. Не говоря уже о том, что таких файлов или каталогов много.

У нас вроде как заканчиваются варианты, а на windows с IIS + Kestrel у нас не было такой проблемы. Все работало отлично, но мы решили, что хотим AWS:)

Мы будем очень благодарны за любые предложения, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...