При использовании многоэкземплярной отказоустойчивой кластеризации (раньше называвшейся активным-активным) в SQL Server 2005 и 2008 я хотел бы знать, для чего вы настраиваете минимальную и максимальную память сервера.
Для двухузлового кластера с несколькими экземплярами (с двумя экземплярами, по одному на каждом узле) рекомендуется настроить минимальную память сервера на 40-45% для каждого экземпляра, чтобы при аварийном переключении два экземпляра не приводят к радикально несбалансированному объему памяти, потому что новый экземпляр может оказывать чрезмерное давление на память уже работающему экземпляру.
Хотя это лучшая практика, я хотел бы услышать мнение людей, которые сталкиваются с такой ситуацией - что вы настраиваете параметры памяти для различных экземпляров? Вы уравниваете их или расставляете приоритеты в зависимости от рабочей нагрузки, выполняемой на каждом экземпляре? Вы пользуетесь WSRM? Вы динамически изменяете параметры памяти на основе конфигурации кластера после отказа?
Спасибо!
PS Мне не нужна информация о том, как работает управление памятью или почему существуют лучшие практики - я все это знаю - мне интересно, что люди делают на самом деле.
PPS Обратите внимание: меня не интересует SQL 2000 - его диспетчер памяти не реагировал на такое давление памяти, поэтому лучше всего было установить максимальную память сервера на 50% для каждого экземпляра. Юк.
Только что сделал это для клиента. У них было 16 гигабайт на каждом узле, при этом каждый экземпляр использовал 8 гигов. Одному экземпляру не хватало оперативной памяти, поэтому мы увеличили его до 12 с настройкой предупреждений для отслеживания перезапуска SQL и отправки сообщения. В случае аварийного переключения из-за отказа оборудования они вручную снижали его, пока оборудование не было исправлено.
У нас есть несколько кластеров с несколькими экземплярами в нашей среде, и для нас это отличается в зависимости от цель экземпляра. В наших кластерах prod-prod на каждом узле 32 ГБ. Мы резервируем 4 для не-SQL (O / S, процессы резервного копирования на ленту, антивирус и т. Д.), А затем вдвое уменьшаем объем ОЗУ (32-4 = 28/2 = 14 ГБ на узел). Это макс. мы устанавливаем минимум 8 ГБ для каждого.
В наших кластерах prod-test мы склоняемся к prod (очевидно). Prod получает максимальную настройку 20 ГБ, Test - 8 ГБ. Мин остается прежним - 8Гб.
Эти значения можно изменить, если мы активно тестируем и хотим убедиться, что наши настройки совпадают между test и prod. Мы заранее планируем такие изменения.
Мы также гарантируем блокировку страниц в памяти, но не включаем трепет, так как это все 64-битные блоки.
В нашем случае мы настраиваем память автоматически (на основе сценария) и на основе порога потребления памяти, который у нас есть для всех экземпляров. Таким образом, память используется правильно.