Это зависит!Многое зависит от того, что приложение делает и где оно тратит свое время.
В общих чертах, хотя:
Если приложение привязано к вычислениям - т.е.Время, необходимое для извлечения данных из внешнего источника, такого как база данных, ограничено - тогда в большинстве случаев установка № 1, вероятно, будет самой быстрой.IIS сам по себе является многопоточным, и предоставляя ему контроль над ресурсами машины, он может самонастраиваться.
Если приложение привязано к данным - т.е. больше, чем (скажем)40% времени, затрачиваемого на каждый запрос, тратится на получение и ожидание данных - тогда установка №2 может быть лучше.Это особенно актуально для менее хорошо написанных приложений, которые выполняют синхронные обращения к базам данных в процессе: даже если поток бездействует, ожидая завершения доступа к базе данных, он все еще потребляет ресурсы.
Как обсуждено здесь: Как увеличить потоки пула потоков в IIS 7.0 В итоге у вас закончатся потоки пула потоков.Однако, как обсуждалось в MSDN здесь: http://blogs.msdn.com/b/david.wang/archive/2006/03/14/thoughts-on-application-pools-running-out-of-threads.aspx создавая несколько рабочих процессов IIS, вы на самом деле просто решаете проблемы более крупных проблем.
Если нет других причин, таких как управляемость,- Я бы не стал рекомендовать установку № 3, поскольку издержки на управление дополнительными операционными системами на целых виртуальных машинах весьма значительны.
Итак: следите за своей системой, используйте что-то вроде MiniProfiler (http://code.google.com/p/mvc-mini-profiler/), чтобы выяснить, где находятся проблемы в коде, и используйте асинхронные неблокирующие вызовы, когда это возможно.