Потоки в ASP.NET подтвердите или пните...
От: RsdnUser  
Дата: 31.03.09 14:30
Оценка:
В ходе разработки веб-приложения с асинхронной подгрузкой данных в кэш встал вопрос, а влияет ли использование потоков из ThreadPool (напрямую или через Timer) на выделение потоков для обработки запросов внешних пользователей. После экспериментировния с параметрами конфига

<httpRuntime minFreeThreads="1" minLocalRequestFreeThreads="1"/>
<processModel autoConfig="false" maxWorkerThreads="3" minWorkerThreads="1" />


и написания парочки страниц, одна из которой занимает надолого поток

protected void Page_Load(object sender, EventArgs e)
{
   Thread.CurrentThread.Suspend();
}


а вторая в том же приложении в Page_Load отоброажает кол-во потоков в пуле:

protected void Page_Load(object sender, EventArgs e)
{
int workTr, compTr;

  System.Threading.ThreadPool.GetAvailableThreads(out workTr, out compTr);

  Response.Write("<br> Available1 " + workTr);
  Response.Write("<br> Available2 " + compTr);

}


а также изменением значений параметров maxWorkerThreads и просмотром количества потоков выделяемых в пуле пришел к следующим выводам:

ASP.NET использует общий с доменом приложения пул потоков. Однако, макс. количество потоков предоставляемое web-приложению для одновременной обработки запросов определяется атрибутами элементов httpRuntime и processModel.
Но это число ограничено размером пула, если значение атрибута maxWorkerThreads превысит разрешенное кол-во потоков пуле.

Кроме того, выделение потока из пула под внутренние нужды логики приложения может затормозить отработку
запроса внешнего пользователя, т.к. выделение новых потоков происходит с задержкой в 500 мс на каждый
новый поток, если в пуле нет свободных потоков.

Если все это так, то запуск нескольких параллельных потоков по таймеру наверное не должен сильно отразится на времени отклика для пользователей. Вот только не могу понять — какой параметр в вышеуказанных секциях указывает за минимальное кол-во потоков в пуле, отведенных под нужды ASP.NET, дабы обеспечить быстрое время отклика.
asp.net потоки таймер пул
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.