Неразумно запускать 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, настройте пулы приложений для агрессивной перезапуска в предотвратить рост пула приложений.