Параллельные запросы в ASP.NET Core - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть метод загрузки файлов в ASP.NET Core 2.2, основанный на HttpSys, размещенном самостоятельно. У меня есть утилита нагрузочного тестирования, которая запускает 10 одновременных подключений и загружает большие файлы. Он отлично работает на моей рабочей станции (24 ядра процессора) - все 10 запросов выполняются параллельно.

Когда я помещаю его на небольшую виртуальную машину (2 ядра, Win Server 2012R2), он ставит в очередь 10 запросов, а затем выполняет их 2 одновременно.

Мой вопрос: как увеличить количество одновременно обрабатываемых запросов?

Я пытался ThreadPool.SetMinThreads(10, 10), но это не имеет значения.

Это мой код (упрощенно):

[HttpPut]
public async Task<ActionResult> Put(string partition, string guid)
{
    var path = GetPath(partition, guid);

    if (System.IO.File.Exists(path)) 
        return Status(409, "File already exists");

    using (var file = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, 4096, true))
    {
        await Request.Body.CopyToAsync(file);
        return Status(200, "");
    }
}
...