Подтвердить что ты не робот

Как ASP.NET многопоточен?

Мне сказали, что ASP.NET многопоточен по умолчанию в IIS. Как достигается эта резьба?

Является ли ферма серверов отправлять разные запросы на разные ядра?

Использует ли один запрос несколько ядер?

Что еще более важно, есть ли какие-либо преимущества для добавления потоков в код ASP.NET, если потоки выполняются выше в IIS?

4b9b3361

Ответ 1

IIS автоматически использует несколько ядер (хотя вы можете отключить его, если захотите).

Преимущество добавления потоков в код ASP.NET заключается в том, что вы можете контролировать свои собственные внутренние приложения и не вынуждены полагаться на IIS, чтобы принимать все решения для вас.

Ответ 2

Мало того, что серверы обрабатывают разные запросы для разных потоков, но один запрос может изменять поток в течение жизненного цикла. Это называется гибкостью потока. Я ищу хорошую статью, объясняющую это...

EDIT: пока нет окончательных статей, но одно сообщение в блоге, объясняющее некоторые из трудностей.

EDIT: Другие ссылки из комментариев:

Ответ 3

ASP.net использует .Net threadpool (который настраивается) Каждый запрос принимается одним из потоков в threadpool, пока каждый поток уже не занят. Затем запрашивает очередь в стеке IIS, пока это не переполнится. Оттуда новые запросы встречаются с очень уродливым сообщением "Сервер недоступен".

Это обычная история с несколькими потоками для веб-сайта ASP.net.

Существует множество способов обеспечения масштабируемости. Наиболее очевидным является тестирование производительности и устранение узких мест из вашего кода.

ASP.net действительно может использовать преимущества нескольких ядер, используя потоки ввода-вывода для любого запроса ввода-вывода. Это делает для уродливого кода, но быстро никогда не было красивым.

Ниже приведено окончательное сообщение MSDN MAG о том, как это сделать

UPDATE

Ну, я, вероятно, попытаюсь ответить на ваш полный вопрос:

"Что еще более важно преимущество добавления потоков в ASP.Net код, если поток выполняется выше в IIS?"

Короткий ответ: это зависит! Если вы ожидаете длительного процесса, вам лучше посоветовать реализовать более приятный опыт для запрашивающего клиента (т.е. Внеполосные вызовы AJAX).

если у вас есть несколько независимых задач, которые необходимо выполнить для запрашивающего клиента: тогда вам может быть лучше не создавать новый процесс для параллельного выполнения задач.

Если ваш сайт получает много трафика, вам действительно нужно рассмотреть возможность внедрения асинхронных шаблонов для более эффективного использования вашего процессора.

Ответ 4

Отдельный поток обычно генерируется для каждого нового запроса, тогда операционная система выполняет планирование процессора. Если вам не нужно обрабатывать только несколько запросов одновременно, вам не требуется дополнительная потоковая передача.