Поток пула потоков в контейнере docker - PullRequest
0 голосов
/ 09 января 2020

Я впервые столкнулся с такой проблемой. Я запускаю приложение в контейнере с некоторыми размещенными сервисами (As pNet, Core C# 8.0, Docker container Linux). Первый сервис делает большой прием данных в моей базе данных. Я объясню сервис: он просто запускается, загружается из Интернета и загружает файл 2 ГБ с большим количеством JSON внутри. Затем он добавляет один за другим каждый JSON файл, десериализованный в моей базе данных. Он начинается довольно хорошо, но после 500 000 записей начинает замедляться и не прекращает прием данных. Если я запускаю

docker logs -f <container>

, я получаю это сообщение:

enter image description here

Со статистикой docker я вижу свой контейнер, используя все ресурс возможен. Большое спасибо за любую помощь!

Это HS:

    private void DoWork(object state)
            {
                using (IServiceScope scope = _services.CreateScope())
                {
                    executionCount++;
                    IVUManager _vuManager = scope.ServiceProvider.GetRequiredService<IVUManager>();
                    _vuManager.BulkLoaderVuMassive();
                }
          }

Это часть кода, управляющая файлом JSON:

           foreach (string filename in filesnumber)
            {
                using (StreamReader r = new StreamReader(filename))
                {
                    //Parsin JSON
                    aInt++;
                    string jsonFull = r.ReadToEnd();
                    JsonDocument jsonDoc = JsonDocument.Parse(jsonFull);
                    JsonElement jsonParsed = jsonDoc.RootElement;
                    ASoVu newVU = new ASoVu();

                    newVU = _importStrategy.VU();

                    _repository.MassiveImportNVD(_context, newVUL)

                    if (aInt == 9999)
                    {
                        _repository.Save(_context);
                    }

                }
            }

Это часть кода, которая делает вставку внутри базы данных:

publi c class VURepository: IVURepository {private readonly ILogger _logger;

public VURepository(ILogger<VURepository> logger)
{
    _logger = logger;
}

public void MassiveImport(VMContext _context, ASoVu newVU)
{
    _context.Vu.Add(newVU);
}
...