Configuração de memória máxima e mínima

4

Um cluster de failover tem 2 nós com 64 GB de RAM cada: - Nó A e Nó B. Nó A executa 2 instâncias SQL (SQL1 e SQL2). O nó B executa 1 instância SQL (SQL3).

SQL1 has a max server setting of 30,720MB and min server setting of 1024MB.
SQL2 has a max server setting of 8192 MB and Min server setting of 1024 MB.
SQL3 doesn’t have any min & max settings.

Após rastrear Available mbyte , target server memory e total server memory do perfmon, abaixo está o que eu colecionei: -

SQL1:- Available MByte: 26GB, Target Server Memory: 30GB, Total Server Memory: 29.8GB
SQL2:- Available MByte: 24GB, Target Server Memory: 8GB, Total Server Memory: 7GB
SQL3:- Available MByte: 58GB, Target Server Memory: 54GB, Total Server Memory: 1GB

Informamos que este é um cluster de failover ativo / ativo. Minha pergunta é: Como eu configuro as memórias max e min? Este é um servidor Win2k8 R2 de 64 bits com instâncias do SQL 2008 R2. Eu calculei e alcancei 7GB para deixar para OS, threads de trabalho, página múltipla e outro aplicativo. Mas, preciso descobrir como equilibrar as configurações de memória mínima e máxima das instâncias de SQL. Como conheço a memória necessária para cada instância? Qual é a melhor prática para definir o min? Por favor ajude.

Esse máximo e mínimo já foram configurados nas instâncias por alguém e concluímos que isso não será preciso como cenário de alta disponibilidade. Então, preciso ajustá-lo e preciso de sua opinião sobre como eu poderia ajustá-lo. Ou, como eu poderia determinar qual instância precisa de muita RAM ou algo assim. Eu acho que em resumo como eu determino a utilização de memória de cada instância.

    
por db7 17.05.2011 / 14:03

3 respostas

1

Você deve definir o mínimo para acomodar o failover completo, caso contrário, seu HA cenário não vai funcionar. Eu não sei muito sobre SQL, mas tenho certeza que o MS suporta apenas ativos / ativos em relação ao SQL para HA não compartilhamento de carga.

    
por 17.05.2011 / 15:41
1

Não há muita informação a ser feita aqui, como, o que os bancos de dados SQL estão fazendo e por que o cluster está ativo / ativo.

Só posso supor pelos detalhes acima:

  • O nó 1 está executando dois bancos de dados de "baixa prioridade" (SQL1 / SQL2)
  • O nó 2 está executando um banco de dados mais importante (SQL3) que requer CPU / RAM dedicada e você deseja ter um failover para isso (no nó 1)
  • Você tem armazenamento compartilhado que não está atualmente vinculado a disco IO (ou seja, a CPU que está sendo usada não é porque está aguardando que os buffers sejam preenchidos)
  • Você fez todas as verificações habituais de gargalos de desempenho

Em um sistema com falha, você teria apenas 18 GB de RAM para o SQL3. Como o SQL3 seria executado em menos de 1/3 da RAM usual? O 'tamanho do alvo' sugere que ele gosta de muita RAM.

    
por 17.05.2011 / 15:47
1

as opções de memória mínima e máxima do servidor informam ao sql server quanto de memória RAM deve ser alocada. Eu tenho isso em minhas anotações sobre a construção de clusters SQL que aparentemente vem do MSDN aqui

examine o objeto de desempenho SQLServer: Buffer Manager enquanto estiver sob uma carga e observe os valores atuais das páginas Roubadas e Contadores de páginas reservadas. Esses contadores relatam memória como o número de páginas de 8K. A memória máxima do servidor deve ser definida acima da soma desses dois valores para evitar erros de falta de memória. Um valor aproximado para a menor configuração de memória máxima razoável do servidor (em MB) é ([páginas roubadas] + [páginas reservadas]) / 100.

O truque vem quando você descobre que não tem memória RAM suficiente em um nó para que todos fiquem felizes com a memória do servidor min. Agora você precisa escolher sua instância menos favorita e fazê-la sofrer ou compartilhar a dor e escolha alguns para sofrer.

'min server memory' define o limite no qual o SQL deixará de liberar memória dinamicamente. Essa configuração geralmente é desnecessária. Não garante que o SQL Server seja alocado pelo menos essa quantidade de memória. Quando o SQL Server é iniciado, ele confirma a quantidade de memória necessária, mesmo que seja menor que o limite de 'memória mínima do servidor'. À medida que mais páginas de dados e planos de consulta são armazenados em cache, a memória que o SQL confirma aumenta. Quando a memória consolidada aumenta acima do limite de 'memória mínima do servidor', o SQL pode liberar páginas (até esse limite), conforme necessário, para manter a memória física livre mínima de cerca de 10 MB

    
por 17.05.2011 / 19:08