Immer wieder klagen Kunden über eine schlechte Performance bei SharePoint und Project Servern. Bei genauerem Hinsehen wird deutlich, dass notwendige Einstellungen auf unterschiedlichen Ebenen nicht oder nur unzureichend getätigt wurden.
Daher werde ich in folgendem Beitrag einen der wesentlichsten Faktoren hinsichtlich der Performance eines SharePoint / Project Servers beleuchten: die Konfiguration des SQL Servers:
SQL Server Konfiguration für SharePoint und
Project Server 2010/2013 (Best Practice)
1 Windows Rollen
Anwendungsserver
Webserver (IIS)
2 Hardware
RAM: 8 GB min. (16 – 32 GB empfohlen je nach Nutzung)
Prozessor: 4 Cores min. (6 – 8 Cores empfohlen je nach Nutzung)
Festplattenplatz:
System: 80 GB
Temp-DB: 20 GB
User-DBs: 80 – 1000 GB (je nach Nutzung)
User-Logs: 80 – 1000 GB ( je nach Nutzung)
Hinweis zur Formatierung der Festplatten:
Alle Festplatten müssen mit NTFS formatiert werden. Zur Performancesteigerung sollten alle Platten, die mit Datenbanken belegt werden, mit einer Clustergröße von 64 KB formatiert werden. Dies betrifft Temp DBs und alle Benutzer Datenbanken.
Weiterhin sollten für die Temp-DB, die User DBs und die User Logfiles getrennte Laufwerke verwandt werden. Bei SAN Laufwerken ist darauf zu achten, dass die Laufwerke unterschiedlichen LUNs zugeordnet wurden.
3 Festplatten Vorbereitungen
3.1 Festplatten initialisieren
Bei virtuell bereitgestellten Servern müssen die Festplatten über die Computerverwaltung zuerst initialisiert werden.
Über einen Rechtsklick werden die Datenträger zunächst online geschaltet und anschließend kann über einen erneuten Rechtsklick der Datenträger initialisiert werden.
Bei den heutigen Betriebssystemen sollte die Partitionierungstabelle mit GPT erfolgen.
3.2 Festplatten formatieren
Nachdem die Datenträger nun online sind, können nun die zusätzlichen Laufwerke formatiert und eingebunden werden (Rechtsklick).
Ein selbsterklärender Assistent führt hierbei durch den Prozess. Daher wird hier nur die wichtigste Einstellung dargestellt:
Der letzte Schritt ist nun der Entscheidendste: Hier werden das Dateisystem-Format und die Clustergröße eingestellt.
Gerade bei SQL Servern ist eine möglichst große Clustergröße wichtig! Denn die Datenbanken sind meist sehr groß, so dass bei Daten-Zugriffen dann nicht so häufig in er Partitionstabelle nachgesehen werden muss, an welcher Stelle auf der Platte die Daten liegen.
Daher sollte unbedingt mit NTFS und 64 KB formatiert werden! (Das neuere ReFS als Nachfolger von NTFS wird noch nicht unterstützt)
Diese Schritte sind für alle Laufwerke zu durchzuführen.
Ergebnis:
4 SQL Server installieren
Ein Assistent führt unspektakulär durch die notwendigen Schritte, daher folgen hier nur die wichtigsten Einstellungen:


Hinweis:
Da in den meisten Fällen die Firewall aktiv ist, muss diese speziell für den SQL Server, die Analysis Services, die Reporting Services und den SQL Browser konfiguriert werden (wird in einem weiteren Post näher beleuchtet).
SQL Server Rollen (Funktionen) installieren.

Grundsätzlich empfiehlt sich eine manuelle Konfiguration der Dienste, da nur so optimale Ergebnisser erziehlt werden können.
Für SharePoint und den Project Server werden oben angegebene Dienste benötigt.
Die Funktionen „Reporting Services – SharePoint“ werden nur dann benötigt, wenn man auch die SharePoint integrierten Reporting Services Funktionen nutzen möchte. Neben zusätzlicher Konfigurationen wie Kerberos und weitere in SharePoint sind auch zusätzliche Lizenzen (SQL Server und/oder SharePoint) notwendig.
In diesem Beispiel werden die Zusatzfunktionen nicht berücksichtigt.
In diesem Beispiel wird von der Standard Instanz ausgegangen. Selbstverständlich können auch andere „benamte“ Instanzen verwendet werden.
Im nachfolgenden Teil werden die Service Konten für die einzelnen SQL Dienste angegeben.
Einstellung des Collation Typs

Die Sortierung (Collation Typ) sollte auf Latin1_General_CI_AS_KS_WS gesetzt werden, da dies den NTFS Gegebenheiten am nächsten kommt.
Hinzufügen der Admin-Rechte:
Seit SQL Server 2008 wird bei der Installation lediglich das Konto des Installierenden hinzugefügt. Dies ist suboptimal, da dann später auch nur die Person Zugriff auf den SQL Server hat, die diesen installiert hat. Daher ist darauf zu achten, dass auch Gruppen hinzugefügt werden, die später mit der SQL Administration zu tun haben.
Speicherorte:
Analog zu den vorher eingerichteten Festplatten sollten hier die Speicherpfade für die SQL Instanz, die Temp-DB, die Benutzer DBs und die Log-Dateien angegeben werden.
Konfiguration der Analysis Services:
Konfiguration der Reporting Services:
Bei einer Standard Instanz ist es möglich, die Reporting Services automatisch einrichten zu lassen, da hier nichts Spektakuläres passiert. Später können sie über den „Konfigurationsmanager für die Reporting Services“ oder über den "SQL Server Reporing Manager" (üblicherweise: http://servername/reports) weiter angepasst werden.

Wenn alles fertig ist, meldet sich der Installationsassistent mit einer Übersicht:
5 Optimierung des SQL Server für SharePoint und Project Server
Der SQL Server ist zwar funktionstüchtig eingerichtet. Doch da ein SharePoint und Project Server hohe Ansprüche an das Datenbanksystem hat, sollte ein SQL Server für diesen Fall immer performancetechnisch optimiert werden, um optimale Reaktionszeiten und einen hohen Durchsatz zu erhalten.
Das nachfolgende SQL Script verändert einige Grundeinstellungen im SQL Server. Die Werte für die Speichergrenzen und die Pfade müssen an die eigenen Gegebenheiten angepasst werden.
use master
GO
sp_configure'show advanced options', 1; -- Erweiterungen werden angezeigt --
GO
RECONFIGURE
GO
sp_configure'clr enabled', 1; -- Common Langugage Runtime wird aktiviert --
GO
sp_configure'fill factor (%)','75' -- die max Auffüllung in den Indexseiten wird auf 75 % gesetzt. Damit ist die Fragemntierung der Indizes geringer --
GO
sp_configure'max degree of parallelism','1' -- ein Prozess, der auf einem Core läuft, wird nicht auf andere NUMA-Knoten aufgeteilt --
GO
sp_configure'min server memory (MB)','5144' -- minimale RAM-Verwendung - dies ist ggf an die eigenen Servergegebenheiten anzupassen --
GO
sp_configure'max server memory (MB)','12288' -- maximale RAM-Verwendung (min. 1,5 GB sollten für das Betriebssystem zur Verfügung stehen, der Wert ist
ggf anzupassen) --
GO
sp_configure'backup compression default','1' -- Backups werden komprimiert --
GO
sp_configure'contained database authentication','1'
GO
RECONFIGURE
GO
-- Erstellung weiterer Datendateien für die Temp-DB (Pro Core wird 1 zusätzliche Datendatei empfohlen mit großer Anfangsgröße. Bei 4 Cores also insgesamt 4 Datendateien) --
GO
ALTERDATABASE[tempdb]MODIFYFILE (NAME=N'tempdev',SIZE= 512000KB,MAXSIZE= 6291456KB,FILEGROWTH= 102400KB) -- Die Größen können in KB oder MB angegeben werden) --
GO
ALTERDATABASE[tempdb]ADDFILE (NAME=N'tempdev2',FILENAME='E:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\tempdb2.ndf',SIZE= 512000KB,MAXSIZE= 6291456KB,FILEGROWTH= 102400KB)
GO
ALTERDATABASE[tempdb]ADDFILE (NAME=N'tempdev3',FILENAME='E:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\tempdb3.ndf',SIZE= 512000KB,MAXSIZE= 6291456KB,FILEGROWTH= 102400KB)
GO
ALTERDATABASE[tempdb]ADDFILE (NAME=N'tempdev4',FILENAME='E:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\tempdb4.ndf',SIZE= 512000KB,MAXSIZE= 6291456KB,FILEGROWTH= 102400KB)
GO
Hinweis: Der Performancegewinn hinsichtklich zusätzlicher Datendateien für die Temp-DB macht sich in der Praxis nur bis zu einer Anzahl von max 8 Datendateien bemerkbar.
Startparameter für den SQL Service
Achtung: Damit die oben erwähnten Datendateien vom SQL Server auch gleichmäßig aufgefüllt werden, muss der nicht dokumentierte Trace-Flag -T1117 als Startparameter gesetzt werden:
Dazu ist die SQL Services MMC zu starten.


Das obige Script kann im SQL Management Studio verwendet werden. Für SQL Server 2008 R2 muss das Script evt. angepasst werden.

6 Konfiguration von Datenbank Wartungsjobs
Gerade für SharePoint und Project Server Umgebungen ist es notwendig, dass die Statistiken und die Indizes aktuell und defragmentiert sind. Daher sollten neben den selbstverständlichen Backup-Jobs auch Jobs für die Optimierung der Datenbanken über den SQL Server Agent hinterlegt werden:
- tägliche Wartung (in den Nachtstunden)
- Statistiken aktualisieren (für User DBs)
- Index neu organisieren (für User DBs)
- wöchentliche Wartung (z.B. am Wochenende)
- Index neu erstellen mit Sortierung in der Temp DB
Wichtiger Hinweis:
Was immer wieder gemacht wird, aber absolut kontraproduktiv ist, ist ein Shrinken der Datenbanken. Durch das Shrinken wird zwar u.U. die Datenbank kleiner, weil evt. vorhandener freier Platz (= leere Daten-Seiten) an das Dateisystem zurückgegeben wird. Aber: Durch das Shrinken fragmentiert eine Datenbank deutlich mehr und schneller, da sie durch die Schreibprozesse ständig erweitert werden muss.
Also: Bitte nur Datenbanken einem Shrinkprozess unterziehen, wenn sie außergewöhnlich stark gewachsen ist. Bitte niemals einen automatischen Shrink-Job einrichten! Denn SharePoint und Project Server schreiben extrem viel in den Datenbanken und brauchen daher performante, möglichts defragmentierte Datenbanken mit genügend Platz.
Außerdem: SharePoint teilt notwendige Shrink-Prozesse in der Zentraladministration unter "Monitoring" mit.
7 Sperren von Seiten im Arbeitsspeicher für SQL Dienste Konto
Datenbanken liefern ihre Daten besonders schnell aus, wenn sie im Arbeitsspeicher gehalten werden können und nicht in in die Auslagerungsdatei von Windows ausgelagert werden. Dieses "Paging" kostet viel Performance.
Daher sollte für das Dienste-Konto des SQL Server in den "Lokalen Sicherheitsrichtlinien" folgende Einstellung getätigt werden:
-> Lokale Richtlinien | Zuweisen von Benutzerrechten | Sperren von Seiten im Arbeitsspeicher
-> dort das Windows Benutzerkonto für den SQL Dienst eintragen
Den kompletten Artikel lesen