Optimizar uma VM para SharePoint 2010 

Tags: SharePoint, SharePoint2010, Performance, Administração

Criar um ambiente de desenvolvimento de SharePoint optimizado já não era uma tarefa fácil com o SharePoint 2007, mas tem-se mostrado uma tarefa bastante mais complexa com a chegada do SharePoint 2010. A nova versão tem mais funcionalidades mas é também mais exigente a nível de recursos, e isso obriga-nos a fazer um pouco mais de "ginástica" para conseguir ter uma máquina virtual com um desempenho aceitável a correr num portátil.

 

No seguimento do artigo do David sobre Performance e Disponibilidade em Sites SharePoint, e porque tenho encontrado muitas pessoas na comunidade com problemas semelhantes aos meus, descrevo neste artigo algumas recomendações e boas práticas que fui coleccionando aqui e ali.

 

Algumas destas recomendações são aplicáveis não só a máquinas virtuais para desenvolvimento, mas também a servidores de produção não virtualizados.

 

Criação da Máquina Virtual

 

Para a criação da máquina virtual há que levar em conta os seguintes requisitos de hardware:

  • Disponibilizar todos os CPU Cores do host para a máquina virtual
  • Disponibilizar, pelo menos, 4GB de RAM para a máquina virtual
  • Colocar a máquina virtual no disco mais rápido do computador
  • Usar discos externos e-Sata pois os interfaces USB 2.0 e FireWire são demasiado lentos
  • Usar discos de 7200 RPM ou, idealmente, SSD

 

Para evitar desperdício de recursos, configurar a VM e desligar tudo o que não precisar:

  • Drive CD
  • Suporte USB
  • Suporte Impressora

 

Adicionalmente, aceda à BIOS da VM e faça disable das portas série e portas paralelas.

 

Optimizar o Sistema Operativo

 

O sistema operativo a utilizar é o Windows Server 2008 R2 64-bits. A edição Standard é suficiente para um ambiente de desenvolvimento, mas avalie outras edições caso haja necessidade de alguma das funcionalidades só presente na versão Enterprise.

 

Num ambiente de desenvolvimento, há muitas optimizações que podem ajudar a libertar recursos:

  • Nas opções de configuração da rede, desinstalar o QoS Packet Scheduler e os componentes de Link Layer Topology Discovery, e desmarcar o IPv6.
  • Desligar a Windows Firewall.
  • Nas propriedades de Computer > Advanced > Performance Options > Visual Effects, seleccionar a opção Adjust for best performance.
  • No Control Panel > Hardware > Sound, não ligar o Windows Audio Service e seleccionar como Sound Scheme a opção No Sounds.
  • Desligar o IE ESC para administradores e utilizadores

 

O pagefile é também um alvo possível de optimização:

  • Se possível colocá-lo num disco diferente do disco do sistema operativo.
  • Definir a dimensão inicial do pagefile para que corresponda à quantidade de RAM da máquina, e a dimensão final para o triplo da quantidade de RAM da máquina (havendo disco disponível)

 

Sempre que possível, é boa ideia desfragmentar os discos antes de desligar a máquina (isto também se aplica ao host da máquina virtual).

 

Optimizar o SQL Server

 

O SQL Server é onde o SharePoint guarda toda a informação e, por essa razão, é um dos principais responsáveis pelo peso de um ambiente de desenvolvimento. Deve ser utilizado o SQL Server 2008 64-bits SP1 com CU2 (ou superior) ou, desejavelmente, o SQL Server 2008 R2 64-bits. O importante aqui é que seja a versão Enterprise ou Developer.

 

Armazenamento

 

Um dos principais pontos de optimização do SQL Server é o armazenamento, ou seja, a velocidade no acesso ao disco. Para garantir o melhor desempenho, há que criar discos virtuais adicionais por forma a separar em discos distintos:

  • TempDB do SQL Server
  • Ficheiros de dados (.mdf e .ldf) das bases de dados
  • Ficheiros de log (.ldf) das bases dados

 

Estes discos deve ter as seguintes características:

  • Ficheiro único (single file)
  • Espaço pré-alocado
  • Formatação NTFS com blocos de 64K

 

Idealmente, cada um destes discos virtuais deve ser armazenado num disco físico distinto, mas quando se pretende usar a máquina virtual num portátil, não é fácil andar com 3 ou mais discos externos na mala.

 

De qualquer forma, existindo ou não discos físicos suficientes, os discos virtuais devem ser colocados em discos físicos de acordo com a sua velocidade, pela seguinte ordem:

  • Disco da TempDB (mais rápido)
  • Disco dos Ficheiros de Log
  • Disco dos Ficheiros de Dados
  • Disco do Sistema (mais lento)

 

Ficheiros de Dados das Bases de Dados

 

Por omissão, o SQL Server define dimensões reduzidas para os ficheiros de dados (data files) e utiliza intervalos de crescimento pequenos para poupar espaço em disco. No entanto, o processo de crescimento dos ficheiros bem como o facto de o fazerem em blocos de pequena dimensão, degrada o desempenho e aumenta a fragmentação dos ficheiros no disco.

 

Para aumentar o desempenho, devemos:

  • Utilizar mais que um data file no primary file group das bases de dados TempDB, de pesquisa e de conteúdos do SharePoint.
  • Usar sempre, no máximo, um data file por cada CPU Core do sistema. Idealmente, um data file por cada 2 CPU Cores.
  • Se possível, separar os data files em discos físicos distintos (muito difícil para um ambiente de desenvolvimento).
  • Pré-alocar todos os data files incluíndo os da TempDB
  • Os data files de cada BD devem ser todos idênticos em dimensão
  • Definir a dimensão dos data files por forma a evitar o crescimento automático (no caso da TempDB, a dimensão total deverá ser 10% da dimensão da maior BD do sistema)
  • Definir intervalos de crescimento dos data files de 256MB ou 512MB

 

Lock Pages in Memory

 

Outra configuração importante é autorizar o SQL Server a utilizar a funcionalidade de Lock Pages in Memory para evitar que o Windows descarregue páginas da memória que possa ainda ser precisas levanto a uma degradação do desempenho (mais informação em: http://support.microsoft.com/kb/918483).

 

Optimizar o SharePoint

 

O SharePoint deve ser instalado através da instalação completa, e não com a instalação stand alone, para que o setup não instale uma nova instância do SQL Server nem configure automaticamente a farm.

 

Depois de instalado, há que configurar o SharePoint ligando apenas as funcionalidades absolutamente necessárias. Cada serviço desnecessário que é ligado corresponde a menos memória e tempo de processador para os que realmente interessam.

 

André Vala

Consultor Senior

|create|it|

 
Posted em 3-Mar-10
5 Comentários  |  Trackback Url  |  Link para este post | Bookmark este post com:        
 

Links para este post

Comentários


Rodrigo Pinto comentou em Wednesday, 3-Mar-2010
Boas André, bom artigo. Só resta salientar, se possível um defrag aos disco aquando o desligar da máquina e a definição da memória virtual(pagefile.sys) num disco diferente do SO. Caso a máquina virtual tenha por exemplo 4 GB , definir a mem virtual com valores inicials = 4GB e valores finais = 3 vezes a memória ou seja 3X4=12 Gb. Lol! Haja disco!


André Vala comentou em Wednesday, 3-Mar-2010
Obrigado pela dica, Rodrigo. Já incorporei no texto.


David Rosa comentou em Wednesday, 3-Mar-2010
Parabéns André pelo post! O que acham de fornecermos uma máquina virtual (para Hyper-V) de SharePoint 2010 toda configurada de acordo com as "nossas optimizações" para o pessoal pode utilizar ao invés da versão de demonstração da Microsoft? Podem contar comigo para a montar! Um abraço.


Ricardo Calejo comentou em Wednesday, 3-Mar-2010
Já agora, um colega da Devscope (Pedro Melo) encontrou um post bastante interessante de uns scrips em powershell em (http://blogs.us.sogeti.com/mhacker/2010/02/18/sharepoint-2010-for-laptops-scripts/). Basicamente, coloca todos os serviços do Sharepoint a manual, e depois faz start e stop aos serviços quando estes forem necessários ou não, para que o Sharepoint não esteja sempre a massacrar uma máquina de desenvolvimento. Os scripts alterados estão em http://www.sharepointpt.org/Repository/RCalejo/Sharepoint2010Scripts.rar


Bruno Silva comentou em Thursday, 18-Mar-2010
A ideia do David Rosa é bastante boa, a ideia de possibilitarem uma maquina em Hv ou VPC com essas configurações era bastante apelativa a quem, tal como eu, gostaria de se iniciar no desenvolvimento de SharePoint.

Nome:
URL:
Email:
Comentário: