Спектакль ИРИО "Архитектура" - PullRequest
2 голосов
/ 21 октября 2011

Мне было просто интересно, что будет иметь лучшую производительность.

Допустим, у нас есть 3 физических сервера, каждый из которых имеет 32 ядра и 64 ГБ оперативной памяти, а приложение является «стандартным» приложением asp.net. Балансировка нагрузки уже на месте.

Настройка 1 # - Одно приложение потребляет все - Один сервер IIS с 1 приложением, запущенным на каждом физическом сервере. (всего 3 приложения "конечные точки")

Настройка 2 # - Общие ресурсы - Один сервер IIS с 16 приложениями в веб-ферме. (всего 48 «конечных точек» приложения)

Настройка 3 # - Виртуализация Виртуализация: 15 виртуальных серверов (всего 45 конечных точек приложений)

Что бы иметь лучшую производительность и почему?

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Это зависит!Многое зависит от того, что приложение делает и где оно тратит свое время.

В общих чертах, хотя:

Если приложение привязано к вычислениям - т.е.Время, необходимое для извлечения данных из внешнего источника, такого как база данных, ограничено - тогда в большинстве случаев установка № 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/), чтобы выяснить, где находятся проблемы в коде, и используйте асинхронные неблокирующие вызовы, когда это возможно.

1 голос
/ 21 октября 2011

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

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