Neste momento me deparo com alguns problemas de desempenho de banco de dados para uma aplicação SaaS. Durante o dia, as estatísticas de espera do RESOURCE_SEMAPHORE disparam de 30 a 60 segundos por 1 ou 2 minutos. Durante esse período, também recebo um ou mais e-mails de alerta de Gravidade 17 de nosso servidor com o aviso "Não há memória de sistema suficiente no pool de recursos 'interno' para executar esta consulta".
Já resolvemos as consultas mais ineficientes que tinham grandes concessões de memória (concessões de 1,5 a 2,5 GB com apenas 5% ou menos de uso). Para identificar essas consultas, usamos sp_BlitzCache de Brent Ozar. Infelizmente, os problemas de desempenho ainda ocorrem após essas alterações.
Lembre-se de que neste momento temos um trabalho de agente que executa DBCC FREEPROCCACHE a cada 5 minutos. Isso torna o problema mais esporádico. Mudar este trabalho para ser executado a cada meia hora parece piorar os problemas. É claro que executar este trabalho tem outras implicações, como compilações mais altas/s e maior utilização da CPU, mas neste momento é uma solução do tipo "melhor dos dois mundos".
Receio que os problemas de pressão de memória sejam resultado do servidor configurado com memória RAM insuficiente. Esta suposição está correta ou esses problemas são criados por outra coisa?
Estatísticas do servidor
- Servidor SQL 2022 (16.0.4085.2)
- 6 processadores lógicos (DOP máximo = 4)
- 16 GB de RAM total, configurado como 14 GB de memória máxima do servidor para SQL Server e 2 GB para sistema operacional
- Um total de 1381 bancos de dados
- Tamanho total do banco de dados: 302 GB