Использует ли страница ASP.net, работающая на IIS, многоядерные процессоры? - PullRequest
3 голосов
/ 08 июля 2010

У меня есть страница ASP.net, на которой выполняется скрипт, выполнение которого занимает от 1 секунды до 10 минут, в зависимости от переданных ему параметров.

Мой вопрос: если сервер многоядерный, этот сценарий автоматически использует все процессоры или он ограничен одним.

Спасибо за любую помощь

Ответы [ 3 ]

2 голосов
/ 08 июля 2010

Нет, страница будет работать только на одном ядре.

IIS использует несколько потоков для обработки запросов, но одновременно использует только один поток для каждого запроса.

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

2 голосов
/ 08 июля 2010

Я считаю, что каждому запросу по умолчанию назначается только один процессор / поток. Вы можете оптимизировать его самостоятельно, создавая несколько потоков в своем коде для выполнения своей работы (таким образом, вы можете использовать больше процессоров).

Вы можете пометить пул приложений, чтобы иметь больше потоков, однако это не назначит больше потоков / процессоров для одного запроса, но позволит обрабатывать больше запросов одновременно (поскольку запросы сбалансированы по потокам). 1003 *

1 голос
/ 08 июля 2010

ASP.NET является многопоточным. Таким образом, новый поток используется для обработки каждого запроса страницы. Все зависит от рабочей нагрузки данного процессора, если новый поток назначен другому CPU / Core. Но все ваши ядра используются ASP.NET. Таким образом, ваше приложение никогда не ограничивается одним процессором.

Но реальный вопрос: какова ваша цель? 1] Вы просто боитесь, что ваши длительные операции будут зависать ASP.NET? 2] Или вы хотите сократить время выполнения вашего скрипта?

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

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...