locked
Memoria Livre SQL RRS feed

  • Pergunta

  • Boa tarde,

    Possuo um cliente que possui um Servidor com 16 GB de memoria.

    O SQL esta limitado para consumir 8 GB, e duas instancias do SSRS estão limitadas para 2 GB cada uma, total desses serviços 12 GB de memoria, sobrando pouco para o S.O .

    Em certos horarios do dia chega a ter de 300megas a 0 megas de memoria livre nesse servidor, porem o sistema ERP não aparenta lentidão, gostaria de saber se existe alguma recomendação de quantidade de memoria livre ou percentual para servidores que executam o SQL server.

    Obrigado!!!

    sábado, 14 de dezembro de 2013 14:49

Respostas

  • Caro Robert,

    O ideal é que o SQL Server não faça paginação dos dados. Você pode saber quanto está sendo paginado verificando no Perfmon o contador Page File.

    http://sqldicas.com.br/dicas/perfmon-e-sql-server/

    Verifique nos logs do SQL Server, bem no começo quando inicia a instância, se está configurado o Lock Pages in Memory:

    http://msdn.microsoft.com/en-us/library/ms190730.aspx

    Com o RamMap você pode saber exatamente o que está sendo paginado no swap:

    http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx

    Abs,


    Luiz Mercante MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 sqldicas@outlook.com http://sqldicas.com.br Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.


    terça-feira, 24 de dezembro de 2013 20:44
    Moderador
  • Robert, bom dia!

     Além do que a galera já falou, você possui uma coleta nestes servidores que utiliza o SQL DIAG? Caso não tenha, recomendo que configure a mesma, os dados gerados pela coleta usando o SQL DIAG podem te dar uma boa noção de como o SQL Server esta fazendo uso da memória do servidor. Veja os links abaixo para te ajudarem com a configuração:

    http://blogs.msdn.com/b/pamitt/archive/2011/02/25/how-to-use-the-sqldiag-the-sqlnexus-and-the-pal-tools-to-analyze-performance-issues-in-sql-server.aspx

    Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    quinta-feira, 26 de dezembro de 2013 10:17
  • Robert,

    É importante saber que o "Max Server Memory" limita o tamanho do buffer cache, mas não limita os demais caches do SQL Server. É comum vermos o "Max Server Memory" em 10GB por exemplo e o processo do SQL estar consumindo 11GB ou 12GB. Em casos mais específicos podemos ver uma diferença maior no consumo de memória.

    Este cenário é comum nos SQL Servers anteriores ao 2012, onde muitos caches estão fora do buffer pool.

    Qual a versão do seu SQL Server?

    Por favor, retorna pra gente poder fechar sua thread.

    Abraços,


    Luiz Mercante MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 sqldicas@outlook.com http://sqldicas.com.br Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    quarta-feira, 5 de março de 2014 12:58
    Moderador

Todas as Respostas

  • Bom dia  Robert !

    Esta máquina contêm só o SQL dedicado para sua solução, ou possui mais algum aplicativo para o negócio instalado?

    Visando o site com as conf. mínimas para SQL http://msdn.microsoft.com/library/ms143506.aspx, é pedido no mínimo 4GB de memória para o mesmo, porém pode variar esta necessidade com a utilização e quantidade de bases. Se você limitou o SQL para usar 8gb, este espaço usado no servidor deixando 300mb deve estar sendo usado por outro aplicativo, por exemplo o management studio(ssms) ou antivírus ou svchost.. Visualize no gerenciador de tarefas quem está consumindo maior parte da memória que deveria ser livre..

    Caso seja os processos com nome de SQLSERV, verifique o serviço associado ao processo (não creio que seja o SQL Engine que esteja consumindo mais de 8gb se você o limitou). Se em alguma hipótese remota o Engine esteja alocando mais memória do que você deseja ou você queira limitar recuso físico por workgroups, você pode estar habilitando o recurso de memória ou processador pelo Resource Governor. Ou também certificar se após você ter limitado a instância, o SQL esteja usando realmente a limitação (o qual é atribuida somente após o STOP/START da instância).

    Abs.

    /Fil

    segunda-feira, 16 de dezembro de 2013 12:16
  • Olá Robert...

    Na maioria dos casos o S.O. se comporta bem somente com 2 Gb de RAM.

    Isso, é claro, se o servidor for dedicado ao SQL Server.

    À disposição...

    Abraço !


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    segunda-feira, 16 de dezembro de 2013 22:12
  • Boa noite,


    O SQL Server tem um ótimo relacionamento com o Sistema Operacional, é recomendado mudar o limite da memória somente em casos específicos, pois deve ter uma análise mais profunda (Ao setar o limite de memória, em determinados casos, você pode está causando uma pressão de memória).

    Mas, confirme se o que você configurou foi 'max server memory 'ao invés de 'min server memory'.

    Para verificar utilize os comandos:

    sp_configure 'show advanced options', 1

    go
    reconfigure 
    go
    sp_configure 'min server memory (MB)'
    go
    sp_configure 'max server memory (MB)'
    go


    Jefferson Santos [MCTS SQL Server]

    segunda-feira, 16 de dezembro de 2013 23:09
  • Robert,

    Você já chegou a identificar as transações que estão em cache:

    SELECT QT.text,
                 QP.query_plan,
                 QS.execution_count,
                 QS.total_elapsed_time,
                 QS.last_elapsed_time,
                 QS.total_logical_reads
    FROM sys.dm_exec_query_stats as QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as QT
     CROSS APPLY sys.dm_exec_query_plan (QS.plan_handle) as QP
    ORDER BY QS.execution_count DESC

    Você sabe qual é o número de usuários e transações que estão sendo processadas neste período:

    SELECT
    
    object_name As Servidor,
    
    instance_name As Banco,
    
    cntr_value As [Transações por Segundo]
    
    FROM sysperfinfo
    
    WHERE counter_name = 'Transactions/sec'

    O bloco de código abaixo, apresenta o tamanho de cada sessão em processamento:

    SELECT A.session_id,
                B.host_name, B.Login_Name ,
                (user_objects_alloc_page_count + internal_objects_alloc_page_count)*1.0/128 as TotalalocadoMB,
               D.Text
    FROM sys.dm_db_session_space_usage A Inner JOIN sys.dm_exec_sessions B  
                                                                         ON A.session_id = B.session_id
                                                                        Inner JOIN sys.dm_exec_connections C 
                                                                         ON C.session_id = B.session_id
    CROSS APPLY sys.dm_exec_sql_text(C.most_recent_sql_handle) As D
    WHERE A.session_id > 50
    and (user_objects_alloc_page_count + internal_objects_alloc_page_count)*1.0/128 > 100 -- Ocupam mais de 100 MB
    ORDER BY totalalocadoMB desc
    COMPUTE sum((user_objects_alloc_page_count + internal_objects_alloc_page_count)*1.0/128)


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 20 de dezembro de 2013 14:21
    Moderador
  • Caro Robert,

    O ideal é que o SQL Server não faça paginação dos dados. Você pode saber quanto está sendo paginado verificando no Perfmon o contador Page File.

    http://sqldicas.com.br/dicas/perfmon-e-sql-server/

    Verifique nos logs do SQL Server, bem no começo quando inicia a instância, se está configurado o Lock Pages in Memory:

    http://msdn.microsoft.com/en-us/library/ms190730.aspx

    Com o RamMap você pode saber exatamente o que está sendo paginado no swap:

    http://technet.microsoft.com/en-us/sysinternals/ff700229.aspx

    Abs,


    Luiz Mercante MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 sqldicas@outlook.com http://sqldicas.com.br Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.


    terça-feira, 24 de dezembro de 2013 20:44
    Moderador
  • Robert, bom dia!

     Além do que a galera já falou, você possui uma coleta nestes servidores que utiliza o SQL DIAG? Caso não tenha, recomendo que configure a mesma, os dados gerados pela coleta usando o SQL DIAG podem te dar uma boa noção de como o SQL Server esta fazendo uso da memória do servidor. Veja os links abaixo para te ajudarem com a configuração:

    http://blogs.msdn.com/b/pamitt/archive/2011/02/25/how-to-use-the-sqldiag-the-sqlnexus-and-the-pal-tools-to-analyze-performance-issues-in-sql-server.aspx

    Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    quinta-feira, 26 de dezembro de 2013 10:17
  • Robert,

    É importante saber que o "Max Server Memory" limita o tamanho do buffer cache, mas não limita os demais caches do SQL Server. É comum vermos o "Max Server Memory" em 10GB por exemplo e o processo do SQL estar consumindo 11GB ou 12GB. Em casos mais específicos podemos ver uma diferença maior no consumo de memória.

    Este cenário é comum nos SQL Servers anteriores ao 2012, onde muitos caches estão fora do buffer pool.

    Qual a versão do seu SQL Server?

    Por favor, retorna pra gente poder fechar sua thread.

    Abraços,


    Luiz Mercante MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003 sqldicas@outlook.com http://sqldicas.com.br Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    quarta-feira, 5 de março de 2014 12:58
    Moderador
  • Este post foi encerrado por ser considerado um post antigo.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 5 de junho de 2018 18:21
    Moderador