get/api/data/{id}/subresource
Каждый запрос извлекает связанные данные с SQL Server с использованием Entity Framework. Первоначально все конечные точки были синхронными, и когда мы выпустили большую часть одновременных запросов, мы заметили: < /p>
Постепенно увеличивалось время отклика по запросам - например, от
~ 140ms до более 3 секунд. Сервер (IIS на EC2). < /p>
< /li>
< /ul>
после рефакторирования всех конечных точек для использования Async /await (с .configureawait (false)), мы заметили, что: < /p>
Все согласные по сравнению с ними. /> постепенно увеличиваясь. Async, он завершается через ~ 200 мс.
, поэтому проблема производительности происходит только при одновременной нагрузке. < /strong> < /p>
Образец iis журналов:
до (sync): < /strong> < /p>
Код: Выделить всё
10:43:53 GET /api/data/71/subresource ... 142ms
10:43:53 GET /api/data/33/subresource ... 219ms
10:43:56 GET /api/data/14/subresource ... 3224ms
10:54:58 GET /api/data/94/subresource ... 3081ms
10:54:58 GET /api/data/59/subresource ... 3065ms
10:54:58 GET /api/data/17/subresource ... 3045ms
< /code>
Вопросы: < /strong> < /p>
Почему синхронизационные конечные точки показали постепенный рост латентности под
, а асинх /> Вызовы ввода/вывода?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... rent-reque