Otimizando o servidor MSSQL 2008 dentro do VMWare ESXi

4

Eu normalmente executo meus servidores MSSQL em servidores dedicados, mas assumimos um cliente que está executando o SQL Server dentro de um host VMWare ESXi 4 e, francamente, está funcionando como uma porcaria.

Identificamos que não é o próprio banco de dados que é o problema. Nós implantamos o mesmo banco de dados em um servidor dedicado com especificações mais baixas do que o convidado VMWare e ele funcionou pelo menos 5 vezes mais rápido.

O servidor é:

Dual Quad Core Xeon 2Ghz (I don't know the exact model)
24Gb RAM
4x 300Gb SAS (RAID 10)
ESXi 4

O host é:

4x vCPUs
3Gb RAM
80Gb disk space
Server 2008 Standard
SQL Server 2008 Workgroup

As outras VMs no host são tráfego muito baixo. Um segundo DC (quase não utilizado), um servidor web de baixo tráfego e um servidor de terminal de baixo volume (~ 5 usuários a qualquer momento) e alguns outros hóspedes.

Eu li um artigo há muito tempo atrás sobre a configuração de várias configurações de Paginação no Windows e no SQL Server para otimizá-lo, mas não consigo mais encontrá-lo: (

Há alguma dica ou truque que alguém possa oferecer para aumentar o desempenho do SQL?

    
por Mark Henderson 07.01.2010 / 03:45

4 respostas

3

Ok, aqui estão algumas dicas, sem uma ordem especial que beneficie o desempenho;

  • Verifique se as VMs estão sendo executadas no hardware virtual do modelo 7 (diz no resumo da VM)
  • Certifique-se de que todos os discos da VM não sejam magros
  • Atualizar para a atualização 4 da versão 1
  • Certifique-se de que todas as VMs tenham as últimas versões de vmtools instaladas
  • Para VMs W2K8, use o controlador de disco 'LSI SAS' e as NICs vmxnet3
  • Verifique se você trocou o sistema operacional
  • Desativar protetores de tela
  • Defina o buffer do quadro de vídeo como 4 MB ou menos
  • Remova qualquer hardware virtual desnecessário de todas as VMs, como disquetes, serial, paralela, etc.
  • Como Zypher diz que o ESX não dará a uma VM qualquer tempo de vCPU até que todas estejam alocadas vCPUs - tente reduzir o número de 4 para 3 ou 2 ( Não tenha medo de dar uma VM 3, 5 ou 7 vCPUs, parece estranho, mas funciona muito bem), também olhar para suas outras VMs, reduzir suas vCPUs se não precisar deles - esta máquina não tem que muitos núcleos realmente
  • Assegure-se de que a virtualização de hardware esteja ativada no BIOS e que todas as opções de gerenciamento de energia estejam ajustadas para o desempenho
  • Veja os "compartilhamentos" de sua VM, considere aumentar e / ou reduzir seus vários valores / prioridades de compartilhamento com base em sua importância e comportamento atual - também considere seriamente suas opções de reserva - essas opções podem fazer uma enorme diferença em uma caixa contestada.
  • Depois, obviamente, observe os dados de desempenho da VM do SQL, especialmente a memória disponível,% RDY e os comprimentos de fila de disco / wait
  • Considere adicionar discos à matriz e / ou fornecer / discos / datastores / discos dedicados da vmdk a essa VM

Vou adicionar mais se eu pensar em qualquer ok, boa sorte.

    
por 07.01.2010 / 08:45
5

Acesse o CLI remoto do vSphere (vá para drivers e ferramentas - > ferramentas de automação e SDKs)

Depois de ter o log de instalação na caixa e usar o esx top para ver onde está o afunilamento ( link informativo )

Como você está executando 4 vCPUs, preste atenção na coluna% RDY da tela do processador em esxtop. este é o tempo que a máquina está esperando para obter acesso a 4 cpus de uma só vez. Dependendo de qual VMWare SE você fala com algo acima de 2-5 é BAD.

Além disso, você pode ver os gráficos na aba "performance" do VIC para ver o que está acontecendo, observar de perto os gráficos de memória, observar um balão de memória alta.

    
por 07.01.2010 / 04:07
1

Talvez a virtualização seja apenas um sinal de um banco de dados com desempenho ruim. Embora o desempenho do banco de dados sempre tenha sido particularmente problemático quando virtualizado, se não for um tráfego muito alto, não há motivo para que o banco de dados não funcione de forma razoável, mantendo os dados quentes na RAM. Gostaria de verificar o desempenho do SQL em geral e ver se ele está usando o 3GB de RAM alocado (você pode dar mais?), Bem como verificar coisas como índices, arquivos de banco de dados fragmentados, especificamente consultas ruins que podem se beneficiar de serem reescritas ou usar índices adicionais, etc.

    
por 07.01.2010 / 04:17
0

Como outros já disseram, 4vCPUs em uma caixa com apenas 8 núcleos totais é muito. Você provavelmente está acertando muita disputa de programação do processador. Eu deixaria cair para um ou dois e ver se o desempenho melhora e vai de lá.

    
por 07.01.2010 / 04:32