Я просто пытаюсь прояснить некоторые понятия здесь.Если кто-то готов поделиться своим опытом в этом вопросе, он будет признателен за это.
Вот мое понимание того, как IIS работает с потоками, пожалуйста, исправьте меня, если я ошибаюсь.
HTTP.sys
Насколько я понимаю, для IIS 6.0 (пока я оставлю IIS 7.0) веб-браузер делает запрос, получает драйвер ядра HTTP.sys,HTTP.sys передает его в пул потоков IIS 6.0 (поток ввода-вывода?), И он освобождается сам.
IIS 6.0 Thread / ThreadPool
Поток IIS 6.0 возвращает его в ASP.NET, который возвращает временный HSE_STATUS_PENDING в IIS 6.0, что освобождает поток IIS 6.0, а затемперешлите его в ветку CLR.
CLR Thread / ThreadPool
Когда ASP.NET выбирает свободный поток в пуле потоков CLR, он выполняет запрос.Если нет доступных потоков CLR, он помещается в очередь в очереди уровня приложения (которая имеет плохую производительность)
Итак, исходя из предыдущего понимания, у меня следующие вопросы.
В синхронном режиме это означает 1 запрос на 1 поток CLR?
*) Если это так, сколько запросов CONCURRENT можно обслуживать на 1 процессоре?Или я должен спросить обратное?Как разрешить потоки CLR на 1 процессор?Скажем, разрешено 50 потоков CLR. Значит ли это, что в любой момент времени ограничено обслуживать 50 запросов?Смущенный.
Если я установлю «requestQueueLimit» в конфигурации «processModle» на 5000, что это означает на самом деле?Вы можете поставить в очередь до 5000 запросов в очереди приложений?Разве это не плохо?Зачем вам устанавливать его так высоко, поскольку очередь приложений имеет плохую производительность?
Если вы программируете асинхронную страницу, где именно она начинает получать выгоду в вышеописанном процессе?
Я исследовал и вижу, что по умолчанию размер пула потоков IIS 6.0 равен 256. Поступает 5000 одновременных запросов, которые обрабатываются 256 потоками IIS 6.0, а затем каждым из 256 потоков рукамиэто к потокам CLR, которые, я предполагаю, еще ниже по умолчанию.разве это не асинхронно?Немного смущен.Кроме того, где и когда узкое место начинает проявляться в синхронном режиме?а в асинхронном режиме?(Не уверен, что я что-то понимаю, я просто запутался).
Что происходит, когда пул потоков IIS (все 256 из них) занят?
Что происходит, когда все потоки CLR заняты?(Полагаю, тогда все запросы помещаются в очередь в очереди уровня приложения)
Что происходит, когда очередь приложения находится над requestQueueLimit?
Большое спасибо за чтение, очень ценю ваш опыт в этом вопросе.