Upload
miguel-isidoro
View
87
Download
2
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
11/10/2014
SharePoint TunningMiguel IsidoroCreate It
sobre mim
Consultor de Soluções SharePointOffice & SharePoint Solutions TeamBlog: http://blogit.create.pt/blogs/miguelisidoro/
Miguel [email protected]
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
objectivo 5/
32
SHAREPOINT TUNNING
porque é o sharepoint tão lento? 6/
32
SHAREPOINT TUNNING
design de base de dados 7/
32
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
como funcionam bds de conteúdos 1 BD por web application, inclui todas as site collections
9/
32
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
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
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
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
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
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
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
í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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
11/10/2014