ASP NET, как найти, где запросы ставятся в очередь

У меня есть проект ASP Net mvc 5, работающий на iis 8.5. Есть несколько страниц с изображениями, полученными в результате таких действий:

<img src='/File/Contents/1'/>
<img src='/File/Contents/2'/>
...

Около 90% изображений загружаются довольно быстро (по несколько миллисекунд каждое), но загрузка последних 10% занимает очень много времени (по 2-5 секунд каждое). Я обнаружил, что действие Contents выполняется с одинаковой скоростью для всех изображений, и большую часть времени проводит между событиями PostMapRequestHandler и AcquireRequestState. Я считаю, что эти запросы где-то стоят в очереди, но я не могу понять, почему это происходит. Я знаю, что в iis есть ограничение на максимальное количество одновременных запросов, но его значение по умолчанию для.net 4 равно 5000, и у меня самое большее около 100 изображений. Может кто-нибудь сказать мне, что происходит?

1 ответ

Вы используете HTTPSession? Если вы используете сеанс, блокировка R/W удерживается, если вы не заявите, что сеанс доступен только для чтения. Это один из основных недостатков использования сеанса, который может привести к тому, что запросы будут помещены в очередь и будут зависать на AcquireRequestState.

Другие вопросы по тегам