2009-09-09 3 views
13

Я читал, что неразумно устанавливать SQL Server и IIS на одном компьютере, но я не видел никаких доказательств этого. Кто-нибудь пробовал это, и если да, каковы были результаты? В какой момент необходимо их разделить? Требуется ли настройка? Я особенно заинтересован в IIS7 и SQL Server 2008.Когда я могу разместить IIS и SQL Server на одном компьютере?

Если кто-то может предоставить номера, показывающие, когда имеет смысл идти на две машины, это было бы очень полезно.

ответ

47

Неправильно запускать SQL Server с любым другим продуктом, включая другой экземпляр SQL Server. Причиной этой рекомендации является характер того, как SQL Server использует ресурсы ОС. SQL Server работает в режиме управления памятью пользователя и инфраструктурой планирования процессора под названием SQLOS. SQL Server предназначен для максимальной производительности и предполагает, что это единственный сервер в ОС.Таким образом, SQL OS резервирует всю ОЗУ на машине для процесса SQL и создает планировщик для каждого ядра ЦП и выделяет задачи для запуска всех планировщиков, используя весь процессор, который он может получить, когда ему это нужно. Поскольку SQL резервирует всю память, другие процессы, которые нуждаются в памяти, заставят SQL увидеть memory pressure, а ответ на давление памяти выведет страницы из пула буферов и скомпилировал планы из кеша плана. И поскольку SQL является единственным сервером, который фактически использует API memory notification (ходят слухи о том, что следующий Exchange тоже), SQL - это единственный процесс, который фактически сжимается, чтобы уступить место другим процессам (например, утечкам багги ASP-пулов). Такое поведение также объясняется в BOL: Dynamic Memory Management.

Аналогичная картина наблюдается при планировании процессора, когда другие процессы крадут процессорное время от планировщиков SQL. На высокопроизводительных системах и на машинах Opteron все ухудшается, потому что SQL использует локальную локальность NUMA в полной мере, но никакие другие процессы, как правило, не знают NUMA и, поскольку ОС может попытаться сохранить локальность распределений, они в конечном итоге выделяют все над физической оперативной памятью и снизить общую пропускную способность системы, так как процессоры работают на холостом ходу, ожидая доступа к странице с граничной границей. Есть и другие вещи, которые следует учитывать, например, TLB и L2 пропустить увеличение из-за других процессов, занимающих циклы процессора.

Итак, вы можете указать может запустить другие серверы с SQL Server, но не рекомендуется. Если вы должны, то убедитесь, что вы изолируете два сервера в своих лучших способностях. Используйте маски слияния CPU для и SQL и IIS/ASP, чтобы изолировать их на отдельных ядрах, настроить SQL, чтобы зарезервировать меньше ОЗУ, чтобы он оставил свободную память для IIS/ASP, настройте ваши пулы приложений, чтобы агрессивно перерабатывать, чтобы предотвратить рост пула приложений ,

+0

@Remus Rusanu - Многим нравится ваш ответ, включая меня. Хорошая техническая информация! :) Я думаю, что ответ часто зависит от ситуации. Мы использовали технологию единого сервера из-за простоты, стоимости и ресурсов в нашей ситуации не требовали разделения. Когда эти требования изменились, мы изменились, но для этого потребовалось почти 8 лет. Я думаю, что многие мелкие и средние магазины могут оказаться в той же ситуации. Мысли? – klabranche

+0

@klabranche: Техническая информация, которую я предоставил, должна помогать в настройке смешанного сервера, чтобы память, ввод-вывод и процессор разбивались как можно лучше между SQL и IIS/ASP. В долгосрочной перспективе: IIS/ASP может легко масштабироваться, тогда как SQL может легко масштабироваться. Таким образом, естественная тенденция состоит в том, чтобы переместить IIS/ASP на фермы или «сады» дешевого оборудования для комода, тогда как SQL остается на самой большой машине, которой располагает org. –

+0

@Remus Rusanu - Согласен. Согласны ли вы с тем, что для небольших/средних магазинов/приложений, в которых ситуации с одним сервером не обязательно являются плохим способом? – klabranche

4

Возможно, да.

Хорошая идея для производственной среды, нет.

Проблема, с которой вы собираетесь столкнуться, заключается в том, что база данных SQL Server при значительной нагрузке, более чем вероятно, будет работать с большими дисками ввода/вывода и иметь большой объем памяти. Эта комбинация собирается связать машину, и вы увидите производительность, поразительную в IIS, поскольку она пытается обслуживать страницы.

6

Да, это возможно, и многие это делают.

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

Производительность под вопросом, так как теперь ваш сервер обслуживает запросы в Интернете и БД. Опять же, возможно, не проблема в вашем случае.

тест против производства ....

Многие могут чувствовать себя хорошо в тестовой среде, но не производство ....

Опять же, вызов вашей команды. Мне нравится, что моя тестовая и производственная среда максимально схожи, но это мое предпочтение.

+0

Я считаю, что эпизод 134 hanselminutes и/или 135 показал, что SO работает на одном сервере. Определенно выполнимо, хотя Скотт был немного в ужасе от этой идеи. :) – klabranche

4

Это неразумно в определенных контекстах ... совершенно разумно в других.

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

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

2

Вы, безусловно, можете. Вы столкнетесь с проблемами производительности, если, например, у вас большая пользовательская база или есть много тяжелых запросов, выполняемых с БД. Я работал на нескольких сайтах, обычно размещенных в 1 и 1, которые запускают IIS и SQL Server (Express!) В одном окне с тысячами пользователей (сотни одновременных) и миллионами записей в плохо разработанных таблицах, доступ к которым осуществляется через плохо написанные хранимые процедуры и пользовательский интерфейс был, безусловно, терпимым. Все сводится к тому, насколько сложно вы планируете поражать сервер.

4

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

Не самый высокий в списке, но следует отметить.

Смежные вопросы