Когда я могу разместить IIS и SQL Server на одной машине?
Я читал, что неразумно устанавливать SQL Server и IIS на одном компьютере, но я не видел никаких доказательств этого. Кто-нибудь пробовал это, и если да, каковы были результаты? В какой момент необходимо их разделить? Требуется ли настройка? Я особенно заинтересован в IIS7 и SQL Server 2008.
Если кто-то может предоставить номера, показывающие, когда имеет смысл идти на две машины, это было бы очень полезно.
Ответы
Ответ 1
Неправильно запускать SQL Server с любым другим продуктом, включая другой экземпляр SQL Server. Причиной этой рекомендации является характер того, как SQL Server использует ресурсы ОС. SQL Server работает в режиме управления памятью пользователя и инфраструктуре планирования процессора, называемой SQLOS. SQL Server предназначен для максимальной производительности и предполагает, что это единственный сервер в ОС. Таким образом, SQL OS резервирует всю ОЗУ на машине для процесса SQL и создает планировщик для каждого ядра ЦП и выделяет задачи для запуска всех планировщиков, используя весь процессор, который он может получить, когда ему это нужно. Поскольку SQL резервирует всю память, другие процессы, которые нуждаются в памяти, заставят SQL видеть значение памяти, а ответ на давление памяти будет вызывать страницы из пула буферов и скомпилировал планы из кеша плана. И поскольку SQL является единственным сервером, который фактически использует уведомление об уведомлении о памяти (ходят слухи о том, что следующий Exchange тоже), SQL - единственный процесс что на самом деле сжимается, чтобы уступить место другим процессам (например, утечка багги ASP-пулов). Это поведение также объясняется в BOL: Динамическое управление памятью.
Аналогичная картина наблюдается при планировании процессора, когда другие процессы крадут процессорное время от планировщиков SQL. На высокопроизводительных системах и на машинах Opteron все ухудшается, поскольку SQL использует NUMA в полной мере, но никакие другие процессы обычно не знают NUMA и, так как ОС может попытаться сохранить локальность распределений, они в конечном итоге распределяют всю физическую память и уменьшают общую пропускную способность системы, так как процессоры работают на холостом ходу, ожидая доступа к странице с граничной границей. Есть и другие вещи, которые следует учитывать также как TLB и L2 пропустить увеличение из-за других процессов, занимающих циклы процессора.
Итак, чтобы подвести итог, вы можете запускать другие серверы с SQL Server, но не рекомендуется. Если вам нужно, убедитесь, что вы изолируете два сервера до ваших лучших способностей. Используйте маски совместимости CPU для SQL и IIS/ASP, чтобы изолировать их на отдельных ядрах, настроить SQL для резервирования меньшего количества ОЗУ, чтобы он оставил свободную память для IIS/ASP, настройте ваши пулы приложений, чтобы агрессивно перерабатывать, чтобы предотвратить рост пула приложений.
Ответ 2
Да, это возможно, и многие это делают.
Это, как правило, вопрос безопасности и/или производительности.
Безопасность подвергается сомнению, так как ваша поверхность атаки увеличивается на поле, которое имеет оба. Возможно, это не проблема для вас.
Производительность ставится под сомнение, так как теперь ваш сервер обслуживает запросы в Интернете и БД. Опять же, возможно, не проблема в вашем случае.
Тест против производства....
Многие могут чувствовать себя хорошо в тестовых средах, но не в производстве....
Опять же, ваш призыв команды. Мне нравятся мои тестовые и производственные среды, насколько это возможно, насколько это возможно, но мои предпочтения.
Ответ 3
Возможно, да.
Хорошая идея для производственной среды, нет.
Проблема, с которой вы собираетесь столкнуться, заключается в том, что база данных SQL Server при значительной нагрузке, скорее всего, будет работать с большими дисками ввода/вывода и иметь большой объем памяти. Эта комбинация собирается связать машину, и вы увидите, что в IIS появляется производительность, поскольку она пытается обслуживать страницы.
Ответ 4
Это неразумно в определенных контекстах... абсолютно разумно в других.
Если ваш компьютер недостаточно используется и не будет испытывать большие нагрузки, тогда есть преимущество в установке базы данных на том же компьютере, потому что вам просто не нужно будет передавать что-либо по сети.
С другой стороны, если один или оба из IIS или базы данных будут находиться под большой нагрузкой, они, вероятно, начнут вмешиваться, а прирост производительности выделенного оборудования для каждого из них, вероятно, опередит потерю необходимости переходить сеть.
Ответ 5
Не забывайте о проблемах обслуживания... вы не можете перезагружать/патч, не обманывая другого. Если они находятся на двух блоках, вы можете дать своим пользователям лучший опыт, чем никакой ответ с веб-сервера, если вы поддерживаете ящик SQL.
Не самый высокий в списке, но следует отметить.
Ответ 6
Вы, конечно, можете. Вы столкнетесь с проблемами производительности, если, например, у вас большая пользовательская база или есть много тяжелых запросов, выполняемых с БД. Я работал на нескольких сайтах, обычно размещенных в 1 и 1, которые запускают IIS и SQL Server (Express!) В одном окне с тысячами пользователей (сотни одновременных) и миллионами записей в плохо разработанных таблицах, доступ к которым осуществляется через плохо написанные хранимые процедуры и пользовательский интерфейс был, безусловно, терпимым. Все сводится к тому, насколько сложно вы планируете поразить сервер.