Temos vários servidores db em produção, 4 deles com configuração de hardware muito semelhante. Dell PowerEdge R620, a única diferença é que os 2 mais novos (comprados e configurados há 3 meses) têm controlador RAID v710, 256 GB de RAM e CPU são 2 Xeon E5-2680 físicos de 2,80 GHz. Os antigos (comprados e configurados há cerca de 1 ano) têm controlador RAID v700, 128 GB de RAM e funcionam com 2 Xeon E5-2690 físicos de 2,90 GHz. O BIOS está atualizado, todos os drivers atualizados para as últimas versões, etc. Todos executando o SQL Server 2008R2 Enterprise (SP1) atualizado para a última CU e Windows 2012R2 Standard. Ambos rodando em 200 GB SSD x5 RAID10. Existe apenas um banco de dados em execução em cada um deles, sincronizado por meio de um trabalho que chama um pacote SSIS. Nosso administrador de sistema executou muitos testes de desempenho e estresse para garantir que não haja nenhuma configuração ou falha de hardware ou rede. Como esperado, os mais novos apresentam melhores resultados de desempenho. Até agora tudo bem.
O problema que temos pode ser visto na captura de tela do Kibana. Amarelo e laranja são os 2 servidores mais novos (6,7 nas tabelas) e abaixo de todos os outros servidores. É perfeitamente visível que esses 2 novos servidores têm um tempo de resposta mais lento. E não só isso, mas também esses 2 servidores têm um pouco menos de carga do que os 2 mais antigos (linhas azuis claras e escuras - 4,5 nas tabelas).
Tenha alguns scripts de monitoramento coletando informações sobre contadores de desempenho. Pesquisei o máximo possível com DMV's e terceiras ferramentas de monitoramento, tenho muitas informações em mãos. Mas deve haver (ofc) algo que estou perdendo aqui, pois não consigo encontrar uma resposta para esse tempo de resposta mais lento.
Os 2 servidores mais novos estão usando menos RAM, mas acho que isso é esperado, quando comparado aos outros mais antigos, pois eles têm uma carga menor.
| Server Name| Mem_MB | Mem_GB | Server_RAM_GB | SQL_max_mem_GB| SQL_min_mem_GB |
|------------|--------|--------------|---------------|---------------|----------------|
| 4 | 41108 | 40.145263671 | 128 | 120 | 16 |
| 5 | 61272 | 59.836425781 | 128 | 120 | 16 |
| 6 | 34117 | 33.317626953 | 256 | 250 | 16 |
| 7 | 33764 | 32.972656250 | 256 | 250 | 16 |
A configuração de mais RAM para todos os servidores é a seguinte:
| Server Name | Total_Page_File_In_MB | Available_Page_File_MB | Kernel_Paged_Pool_MB | Kernel_Nonpaged_Pool_MB |
|-------------|-----------------------|------------------------|----------------------|-------------------------|
| 4 | 180160 | 130042 | 249 | 98 |
| 5 | 148416 | 77246 | 249 | 110 |
| 6 | 301010 | 260453 | 132 | 99 |
| 7 | 301010 | 260454 | 143 | 108 |
A execução da seguinte consulta em todos os servidores mostra parâmetros de configuração idênticos:
SELECT * FROM master.sys.configurations
Eu poderia continuar mostrando muito mais informações, mas não tenho certeza do que poderia ser necessário. Alguma pista sobre o que devo verificar?
Eu li um white paper conhecido do MS Troubleshooting Performance Problems in SQL Server 2008 e tirei muitas dúvidas do DMV de lá.
EDITAR A pedido:
EXEC sp_configure 'max server memory (MB)'
| Server Name | name | minimum | maximum | config_value | run_value |
|-------------|------------------------|---------|------------|--------------|-----------|
| 4 | max server memory (MB) | 16 | 2147483647 | 120000 | 120000 |
| 5 | max server memory (MB) | 16 | 2147483647 | 120000 | 120000 |
| 6 | max server memory (MB) | 16 | 2147483647 | 250000 | 250000 |
| 7 | max server memory (MB) | 16 | 2147483647 | 250000 | 250000 |
Já maxdop
jogamos com ele e os resultados são:
EXEC sp_configure 'max degree of parallelism'
| Server Name | name | minimum | maximum | config_value | run_value |
|:-----------:|:-------------------------:|:-------:|:-------:|:------------:|:---------:|
| 4 | max degree of parallelism | 0 | 1024 | 1 | 1 |
| 5 | max degree of parallelism | 0 | 1024 | 1 | 1 |
| 6 | max degree of parallelism | 0 | 1024 | 1 | 1 |
| 7 | max degree of parallelism | 0 | 1024 | 1 | 1 |
Esta imagem diz tudo.
Obrigado Kin por apontar sua pergunta e respostas relacionadas. Aprendi muito no processo. Ao examinar sua pergunta detalhada, pensei em fazer o mesmo, comparando os planos de execução de nossa consulta mais pesada ... e pronto !! O problema era que um trabalho que deveria estar sendo executado já estava há algumas semanas com o cronograma desativado. Agora devo verificar por que foi desativado e quando exatamente foi desativado. Tudo está funcionando perfeitamente agora. A linha azul é um servidor que não está recebendo solicitações devido a manutenção, não está morto.