Когда я могу разместить IIS и SQL Server на одном компьютере?

13
задан Justin R. 11 September 2009 в 18:12
поделиться

6 ответов

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

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

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

47
ответ дан 1 December 2019 в 17:17
поделиться

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

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

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

Тестирование против производственной среды ....

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

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

6
ответ дан 1 December 2019 в 17:17
поделиться

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

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

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

4
ответ дан 1 December 2019 в 17:17
поделиться

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

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

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

4
ответ дан 1 December 2019 в 17:17
поделиться

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

2
ответ дан 1 December 2019 в 17:17
поделиться

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

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

4
ответ дан 1 December 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: