32
11/10/2014

2014.10.11 SPUG PT - SharePoint Tunning

Embed Size (px)

DESCRIPTION

Tips and Tricks to increase performance in your SharePoint environment In this session we will talk about some techniques used to improve the performance in your SharePoint farm

Citation preview

Page 1: 2014.10.11 SPUG PT - SharePoint Tunning

11/10/2014

Page 2: 2014.10.11 SPUG PT - SharePoint Tunning

SharePoint TunningMiguel IsidoroCreate It

Page 3: 2014.10.11 SPUG PT - SharePoint Tunning

sobre mim

Consultor de Soluções SharePointOffice & SharePoint Solutions TeamBlog: http://blogit.create.pt/blogs/miguelisidoro/

Miguel [email protected]

Page 4: 2014.10.11 SPUG PT - SharePoint Tunning

agenda Porque é o SharePoint tão lento? Design de bases de dados Bases de dados de conteúdos Boas práticas de bases de dados TempDB Índices e estatísticas Alocação de memória SQL Server Farm SharePoint SharePoint “Development Tips” Q & A

4/

32

SHAREPOINT TUNNING

Page 5: 2014.10.11 SPUG PT - SharePoint Tunning

objectivo 5/

32

SHAREPOINT TUNNING

Page 6: 2014.10.11 SPUG PT - SharePoint Tunning

porque é o sharepoint tão lento? 6/

32

SHAREPOINT TUNNING

Page 7: 2014.10.11 SPUG PT - SharePoint Tunning

design de base de dados 7/

32

SHAREPOINT TUNNING

Page 8: 2014.10.11 SPUG PT - SharePoint Tunning

sql server com sharepoint Desenhada com abordagem “Less Maintenance” Instala-se e funciona As definições por omissão não visam a performance Quase ninguém faz “tweak” as configurações

8/

32

SHAREPOINT TUNNING

RESULTADO:

SHAREPOINT É LENTO

Page 9: 2014.10.11 SPUG PT - SharePoint Tunning

como funcionam bds de conteúdos 1 BD por web application, inclui todas as site collections

9/

32

SHAREPOINT TUNNING

Page 10: 2014.10.11 SPUG PT - SharePoint Tunning

como funcionam bds de conteúdos Boa prática: divisão de site collections por mais que 1 BD

de conteúdos (depende volume informação) Apenas disponível usando PowerShell

Ideal: limitar tamanho BD conteúdos a 200GB (4 TB com condições HW específicas)

10/32

SHAREPOINT TUNNING

Page 11: 2014.10.11 SPUG PT - SharePoint Tunning

como funcionam bds de conteúdos

Quando é apagada informação da base de dados, tamanho da BD permanece igual, deixando a BD altamente fragmentada

Autogrowth por omissão: 44Mb initial size with 1MB autogrowth Exemplo: num upload de ficheiro de 5MB, BD cresce 5 vezes!

11/32

SHAREPOINT TUNNING

Page 12: 2014.10.11 SPUG PT - SharePoint Tunning

boas práticas de bases de dados Pré-alocar espaço de bases de dados, alterar definições

de autogrowth BDs de SharePoint (incluindo BDs de conteúdo) devem ter

tamanho inicial de 500MB a 1GB e um autogrowth de 256MB ou 512MB

Não usar autoshrink O shrink causa fragmentação de índices na base de dados Excepção: operações Move-SPSite

Neste caso, site collections são movidas entre base de dados e shrink deve ser feito para efeitos de recuperação de espaço na base de dados

12/32

SHAREPOINT TUNNING

Page 13: 2014.10.11 SPUG PT - SharePoint Tunning

discos servidor SQL Server

Usar discos separados (se possível discos físicos separados) para: TempDB (.mdf e.ldf, discos mais rápidos) Database data files (.mdf) Database log files (.ldf) Sistema operativo (discos menos rápidos)

Em ambientes virtuais, discos virtuais devem: Ser constituídos por ficheiro único Ser criados com espaço pré-alocado

Tamanho dos blocos por omissão é de 4KB Discos devem ser formatados em NTFS usando blocos de

64K Permite reduzir fragmentação dos discos

13/32

SHAREPOINT TUNNING

Page 14: 2014.10.11 SPUG PT - SharePoint Tunning

tempdb Separar data files em vários ficheiros (# ficheiros = #

SQL Server CPUs com máx = 16) Cuidado com servidores com alto # de CPUs (possíveis

impactos negativos) Todos os ficheiros devem ter a mesma dimensão (espaço

pré-alocado) Permite uso de data files em “round robin” e dividir a carga

entre os vários data files Alterar o “database recovery model” para “Simple”

É uma base de dados com operações de leitura/escrita constantes

Evita crescimento de log files

14/32

SHAREPOINT TUNNING

Page 15: 2014.10.11 SPUG PT - SharePoint Tunning

tempdb A dimensão de cada ficheiro da base de dados tempdb

deve ser 25% da maior base de dados de conteúdos Espaço livre em disco > 25% para acomodar picos de

utilização Colocar ficheiros (.mdf e .ldf) nos discos mais rápidos O disco para a BD tempdb deve ser para uso exclusivo

desta base de dados

15/32

SHAREPOINT TUNNING

Page 16: 2014.10.11 SPUG PT - SharePoint Tunning

bases de dados sharepoint_config Recomendada a alteração do “database recovery model”

para “Simple” É uma base de dados com operações de leitura constantes Evita crescimento de log files

16/32

SHAREPOINT TUNNING

Page 17: 2014.10.11 SPUG PT - SharePoint Tunning

índices Índices são especialmente

importantes pois BDs conteúdo são partilhadas por site collections e todos os seus sites, listas e itens!

Evitar fragmentação índices Não usar autoshrink

Usar Maintenance Plan: Incluir opções “Reorganize Index”

ou “Rebuild Index” mas não os dois em simultâneo (ambas atingem o mesmo resultado)!

Nunca incluir opção “Shrink Database”

17/32

SHAREPOINT TUNNING

Page 18: 2014.10.11 SPUG PT - SharePoint Tunning

estatísticas Garantir estatísticas sempre

actualizadas Não usar autocreate e

autoupdate de estatísticas do SQL Server em todas as BDs de SharePoint, SharePoint tem mecanismo de actualização de estatísticas diário SP proc_UpdateStatistics

Não efectuar backups à meia noite É quando SQL Server

actualiza estatísticas, job é cancelado

18/32

SHAREPOINT TUNNING

Page 19: 2014.10.11 SPUG PT - SharePoint Tunning

alocação memória sql server Por omissão, o SQL Server

está configurado para usar: 2.1 PB / 2147 TB / 2147483

GB Basicamente, vai tentar

usar toda a memória disponível do servidor

19/32

SHAREPOINT TUNNING

Page 20: 2014.10.11 SPUG PT - SharePoint Tunning

alocação memória sql server Boa prática: atribuição de cerca de 80% da memória RAM do servidor,

podendo a percentagem ser superior para servidores com maior quantidade de memória RAM

Valor a ser ajustado de acordo com número de serviços a correr no servidor (SQL Server SQL Engine, SSRS, Analysis Services, etc)

20/32

SHAREPOINT TUNNING

Memória RAM Servidor (GB) Limite memória SQL Server (MB)

8GB 6400

12GB 10000

16GB 13500

24GB 21500

32GB 29000

48GB 44000

64GB 60000

72GB 68000

96GB 92000

128GB 124000

Page 21: 2014.10.11 SPUG PT - SharePoint Tunning

recycle bin Informação na Recycle Bin é armazenada na BD

de conteúdos de SharePoint em 2 níveis: 1st Stage Recycle Bin – armazena

informação apagada pelos utilizadores 2nd Stage Recycle Bin – armazena

informação apagada da 1st Stage Recycle Bin

Informação apagada automaticamente após 30 dias por omissão Valor conjunto para as duas Recycle Bin

Por omissão, 2nd stage Recycle Bin armazena até 50% de quota do site Sem quotas, não existe limite para espaço

da 2nd Stage Recycle Bin Diminuir este valor para um valor inferior.

Objectivo: Diminuição da dimensão da BD de conteúdos Aumento de performance

21/32

SHAREPOINT TUNNING

Page 22: 2014.10.11 SPUG PT - SharePoint Tunning

maxdop MAXDOP = max degree of

parallelism, controla o nº de threads usadas por operador na execução de uma query, permitindo processamento paralelo de querys

Por omissão, MAXDOP = 0. Em instalações de SQL Server para SharePoint, definir MAXDOP = 1. Vantagens: 1 única thread executa pedido

(querys de SharePoint não tiram partido de execução paralela) Diminuição de contenção (database locks)

Menor consumo de recursos do servidor

22/32

SHAREPOINT TUNNING

Page 23: 2014.10.11 SPUG PT - SharePoint Tunning

farm sharepoint Se possível, ter pelo menos 3

servidores: FrontEnd (WFE) Application Server Servidor SQL Server

Apenas correr os serviços necessários Topologia Search:

WFE: ter apenas a correr no WFE a componente de query

App Server: todos as restantes componentes (incluindo o Crawl)

Ambientes desenvolvimento: Alterar o “Performance Level” para “Partial

Reduced” ou “Reduced”Get-SPEnterpriseSearchService | Set-SPEnterpriseSearchService –PerformanceLevel “PartlyReduced”

23/32

SHAREPOINT TUNNING

Page 24: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Usar CAML Queries, são rápidas e eficientes Não colocar em cache objectos do tipo

SPListItemCollection, contêm objectos SPWeb embebedidos que não são thread safe. Devem antes ser colocados em cache objectos do tipo DataTable

24/32

SHAREPOINT TUNNING

Page 25: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Não usar SPWeb.Lists. SPWeb.Lists. Obtém todas as

Listas de um site site (SPWeb). Deve antes ser usado o método SPWeb.GetList. Não usar: SPList list = SPList.Lists[“ListName”]; Usar: SPList list = SPWeb.GetList(listUrl);

Não usar SPList.Items. Obtém todos os itens de todas as subpastas de uma Lista, incluindo informação de todos os campos da Lista. Usar as seguintes alternativas consoante o caso: Adicionar um Item:

Não usar : SPList.Items.Add Usar: SPList.AddItem

Obter todos os itens de uma Lista: Não usar: SPLIstItemCollection items = SPList.Items Usar: SPLIstItemCollection items = SPList.GetItems(SPQuery query)

25/32

SHAREPOINT TUNNING

Page 26: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Não iterar lista de itens com SPList.Items[i]. Usar

variável auxiliar. Não usar: for(int idx =0; idx< oList.ItemCount; idx ++)

{ string strLstItemName = oList.Items[idx].Name; } Usar: SPListItemCollection oListItems = oList.Items;

for(int idx =0; idx< oList.ItemCount; idx ++) { string strLstItemName = oListItems[idx].Name; }

26/32

SHAREPOINT TUNNING

Page 27: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Obter número de itens de uma Lista:

Não usar: SPList oList = web.GetList("http://Site/list/AllItem.aspx");

int iCount = oList.Items.Count; Usar: SPList oList = web.GetList("http://Site/list/AllItem.aspx"); int iCount = oList.ItemCount;

27/32

SHAREPOINT TUNNING

Page 28: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Dispose de SPSite.RootWeb – Dispose não é necessário

apesar de anterior recomendação para o fazer

public void RootWebBestPractice(){ // New SPSite. using (SPSite siteCollection = new SPSite("http://moss")) { SPWeb rootWeb1 = siteCollection.RootWeb; // No explicit rootWeb1 dispose required. } // siteCollection automatically disposed by implementing using(). // rootWeb1 will be Disposed by SPSite. // SPContext and SPControl SPWeb rootWeb2 = SPContext.Current.Site.RootWeb; // Also would apply to SPControl.GetContextSite(Context); // No explicit rootWeb2 dispose required because it's obtained from SPContext.Current.Site.}

28/32

SHAREPOINT TUNNING

Page 29: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Enumeração de colecção SPList.Items ou SPFolder.Files

29/32

SHAREPOINT TUNNING

Abordagem não recomendada Abordagem recomendadaSPList.Items.Count SPList.ItemCount

SPList.Items.XmlDataSchema Create a SPQuery object to retrieve only the items you want.

SPList.Items.NumberOfFields Create a SPQuery object (specifying the View Fields) to retrieve only the items you want.

SPList.Items[System.Guid] SPList.GetItemByUniqueId(System.Guid)

SPList.Items[System.Int32] SPList.GetItemById(System.Int32)

SPList.Items.GetItemById(System.Int32) SPList.GetItemById(System.Int32)

SPList.Items.ReorderItems(System.Boolean[],System.Int32[],System.Int32)

Perform a paged query by using SPQuery and reorder the items within each page.

SPFolder.Files.Count SPFolder.ItemCount

Page 30: 2014.10.11 SPUG PT - SharePoint Tunning

development tips Se possível, não usar código server-side Em vez de código server-side, dependendo do cenário,

usar: REST CSOM JSOM

Vantagens de usar REST, CSOM ou JSOM: Menos problemas causados por API SharePoint server-side Aquisição de skills que facilitam a adesão ao app model Facilitada a migração para a cloud (Office 365)

30/32

SHAREPOINT TUNNING

Page 31: 2014.10.11 SPUG PT - SharePoint Tunning

referências http://technet.microsoft.com/en-us/library/cc262787(v=office.15).aspx - Software boundaries and limits for

SharePoint 2013 http://technet.microsoft.com/en-us/library/cc678868(v=office.15).aspx - Database types and descriptions

(SharePoint 2013) http://technet.microsoft.com/en-us/library/cc298801.aspx - Storage and SQL Server capacity planning and

configuration http://blogs.technet.com/b/sqlpfeil/archive/2012/03/13/recovery-models.aspx - SQL Server Recovery models http://technet.microsoft.com/en-us/magazine/jj643251.aspx - SQL Server: Minimize Disk I/O http://blog.sqlauthority.com/2010/01/12/sql-server-fragmentation-detect-fragmentation-and-eliminate-fragme

ntation/ - SQL Server - Fragmentation – Detect Fragmentation and Eliminate Fragmentation

http://myadventuresincoding.wordpress.com/2013/05/27/sql-server-check-index-fragmentation-on-all-indexes-in-a-database/ - SQL Server – Check Index Fragmentation on ALL Indexes in a Database

http://blog.idera.com/sql-server/understanding-sql-server-statistics/ - Understanding SQL Server Statistics http://www.sqlpassion.at/archive/2014/01/28/inside-the-statistics-histogram-density-vector/ - Inside the

Statistics Histogram http://captainofsharepoint.wordpress.com/2013/07/32/sharepoint-2013-recycle-bin-tricks/ - SharePoint 2013

Recycle Bin Tricks http://technet.microsoft.com/en-us/library/hh292622(v=office.15).aspx - Best practices for SQL Server in a

SharePoint Server farm http://sqlserverperformance.wordpress.com/2009/10/29/suggested-max-memory-settings-for-sql-server-2005

2008/ - Suggested Max Memory Settings for SQL Server 2005/2008

http://technet.microsoft.com/en-us/library/cc262732(v=office.14).aspx - Database maintenance for SharePoint 2010 Products

http://technet.microsoft.com/en-us/library/jj219591(v=office.15).aspx - Plan service deployment in SharePoint 2013

http://msdn.microsoft.com/en-us/library/office/ee558270(v=office.14).aspx - Object Caching Techniques http://www.developerspoint.in/articles/sharepoint/mistakes-to-avoid-in-sharepoint.asp - Mistakes to avoid in

SharePoint development

31/32

SHAREPOINT TUNNING

Page 32: 2014.10.11 SPUG PT - SharePoint Tunning

11/10/2014