Неправильно запускать 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, настройте ваши пулы приложений, чтобы агрессивно перерабатывать, чтобы предотвратить рост пула приложений ,
@Remus Rusanu - Многим нравится ваш ответ, включая меня. Хорошая техническая информация! :) Я думаю, что ответ часто зависит от ситуации. Мы использовали технологию единого сервера из-за простоты, стоимости и ресурсов в нашей ситуации не требовали разделения. Когда эти требования изменились, мы изменились, но для этого потребовалось почти 8 лет. Я думаю, что многие мелкие и средние магазины могут оказаться в той же ситуации. Мысли? – klabranche
@klabranche: Техническая информация, которую я предоставил, должна помогать в настройке смешанного сервера, чтобы память, ввод-вывод и процессор разбивались как можно лучше между SQL и IIS/ASP. В долгосрочной перспективе: IIS/ASP может легко масштабироваться, тогда как SQL может легко масштабироваться. Таким образом, естественная тенденция состоит в том, чтобы переместить IIS/ASP на фермы или «сады» дешевого оборудования для комода, тогда как SQL остается на самой большой машине, которой располагает org. –
@Remus Rusanu - Согласен. Согласны ли вы с тем, что для небольших/средних магазинов/приложений, в которых ситуации с одним сервером не обязательно являются плохим способом? – klabranche