Тестировал производительность реального кода (по get-запросу лезет в базу firebird и возвращает json).
.net472 на await-ах.
тестировал nbomber-ом(dotnet). клиент и сервер на одной тачке win10x64 i3 8Гб озу( не быстрая).
на 5 в сек 100% успех
на 10 уже только 95%.
тест длится 30 секунд.
Exception: Указанное сетевое имя более недоступно
Member Name: Void EndWrite(System.IAsyncResult)
Class Defining Member: System.Net.HttpResponseStream
Member Type: Method
Source: System
Stack Trace: в System.Net.HttpResponseStream.EndWrite(IAsyncResult asyncResult)
в System.IO.Stream.<>c.<BeginEndWriteAsync>b__53_1(Stream stream, IAsyncResult asyncResult)
в System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization)
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Runtime.CompilerServices.TaskAwaiter.GetResult()
в экспериментах заметил подозрительное, если к GetContext добавить ConfigureAwait(false) то ошибка возникает гораздо чаще.
await-ы вроде везде стоят.
не пойму в чем проблема.
Да, еще если завершить энбомбера, еще долго идут запросы к приложению. как будто очередь забилась.
Подозреваю, что это системные ограничения не связанные напрямую с дотнетом.
Бомбер стучится к приложению по localhost или по доменному имени?
Если по доменному, то проверить настройки по макс.количеству подключений (см. https://habr.com/ru/post/424873 — они разные для .NET и .NET Core).
Если по localhost, то приложение случайно не на HttpListener'е сделано? Попробуй увеличить очередь входящих запросов, примерно вот так.
vaa>по короткому имени(без точек). не знаю доменное или нетбиос. но не локалхост.
Ну тогда, вероятно, дело в лимите подключений на домен.
Запусти пока бомбер работает: netstat -af | findstr <твой_домен>
Увидишь, сколько реально создается HTTP-соединений к твоему приложению.
Кстати, тот пример, что в git'e у меня начинал пятисотить на ~400-450 RPS (время обработки запроса >500ms).
Здравствуйте, RushDevion, Вы писали:
RD>Запусти пока бомбер работает: netstat -af | findstr <твой_домен>
сделал тестовый сервис на корке. странно, но даже поиск по номеру порта пуст во время запуска.
RD>Кстати, тот пример, что в git'e у меня начинал пятисотить на ~400-450 RPS (время обработки запроса >500ms).
Добавил рандомную задержку 200 — 1500 и стал считать кол-во запросов более 900 мс.
оказалось ровно столько фэйлится в бомбере, видимо в нем таймаут на ожидание и он разрывает соединение.
надеюсь реальный клиент подождет данные