Слишком много открытых файлов в системе SocketException в. net ядро ​​API / облачный запуск - PullRequest
0 голосов
/ 02 февраля 2020

Я написал базовый API. net, который находится в контейнере и работает в Cloud Run. Мой API получает вызовы каждый раз, когда файл создается в GCS-корзине (один раз для каждого файла), обрабатывает файл и записывает новые файлы в другую корзину. В данный момент я загружаю около 50-80 файлов каждую минуту в этот источник. В журналах я вижу много таких ошибок.

System.Net.Http.HttpRequestException: Too many open files in system ---> System.Net.Sockets.SocketException: Too many open files in system at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType) at System.Net.Sockets.DualSocketMultipleConnectAsync..ctor(SocketType socketType, ProtocolType protocolType) at System.Net.Sockets.Socket.ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e) at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)

В метриках облачного запуска я также вижу, что ответов 4xx намного больше, чем ответов 2xx. И по какой-то причине мои сборы за 31 января составляли около 10 долларов в день, тогда как вчера было едва 2 доллара. У меня такое ощущение, что многие файлы теперь просто сбрасываются с 4xx и не обрабатываются. Я сделаю больше исследований, но как я могу узнать, что именно вызывает ошибки 4xx. И как устранить вышеуказанную ошибку? Я прочитал несколько статей об изменении системных настроек linux, чтобы добавить больше файлов, но я не уверен, где внести эти изменения в мой. net core api, работающий в облачной среде?

...