Project- und SharePoint Blog

In diesem Blog werde ich von Zeit zu Zeit interessante Artikel zu den Themen Microsoft Project, Project Server und SharePoint veröffentlichen.

Konfigurationen für performante Project Server: der SQL Server

Konfigurationen für performante Project Server: der SQL Server

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 und Optimierung 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.

 b2ap3_thumbnail_Laufwerkserstellung.png 

Über einen Rechtsklick werden die Datenträger zunächst online geschaltet und anschließend kann über einen erneuten Rechtsklick der Datenträger initialisiert werden.

 b2ap3_thumbnail_Datentrgerinitialisierung_1.png

 b2ap3_thumbnail_Datentrgerinitialisierung_2.png

 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).

 b2ap3_thumbnail_Festplatten-formatieren.png

Ein selbsterklärender Assistent führt hierbei durch den Prozess. Daher wird hier nur die wichtigste Einstellung dargestellt:

 b2ap3_thumbnail_64KB.png

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:

b2ap3_thumbnail_Ergebnis.png

4      SQL Server installieren

 b2ap3_thumbnail_SQL-Server-installieren.png

 Ein Assistent führt unspektakulär durch die notwendigen Schritte, daher folgen hier nur die wichtigsten Einstellungen:

b2ap3_thumbnail_Updates.pngb2ap3_thumbnail_Firewall.png

 

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.

 b2ap3_thumbnail_Funktionen.png

b2ap3_thumbnail_Funktionsauswahl.png

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.

b2ap3_thumbnail_Instanz.png 

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.

 b2ap3_thumbnail_Dienstekonten.png

Einstellung des Collation Typs

 b2ap3_thumbnail_Collation-1.png

b2ap3_thumbnail_Collation-2.png

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.

 b2ap3_thumbnail_Adminrolle.png

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.

 b2ap3_thumbnail_Speicherorte.png

Konfiguration der Analysis Services:

 b2ap3_thumbnail_Analysis-Services-Admin-Rolle.jpg

 b2ap3_thumbnail_Analysis-services-Speicherorte.jpg

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.

b2ap3_thumbnail_Reporting-Services.jpg

 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.

Achtung: 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. Empfohlen 2-3                                                                                             GB., 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 1:
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.

Hinweis 2:
Was für die Temp-DB gilt, gilt auch für größere und stärker genutzte WSS_Content Datenbanken: Wird eine Content-DB stark verwendet bzw. werden darin viele Daten geschrieben, können zur Performancesteigerung auch mehrere Datendateien angefügt werden. Damit können die Schreibprozesse besser verteilt werden.

 

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.

SQL Server Konfigurations MMC

      Über einen Doppelklick auf dem Service (MSSQLSERVER) gelangt man zu den Eigenschaften. Dort kann im Register "Start" der Parameter -T1117 hinzugefügt werden.  

Trace Flag Parameter

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

b2ap3_thumbnail_SQL-Server-Optimierung-1.jpg

b2ap3_thumbnail_SQL-Server-Optimierung-3.jpg   

6      Anpassung der Datenbank Größen und Erweiterungsraten

Standardmäßig wird zum Neuerstellenden von Datenbanken als Vorlage die "Model DB" verwendet. Diese ist aber eher für kleinere Datenbanken eingestellt und nicht für die in einem SharePoint System üblichen großen Datenbanken mit etlichen GB und den ständigen Schreibprozessen.

Daher ist es dringend angeraten, die Model-DB entsprechend anzupassen. Im Standard wird jede neue Datenbank mit einer Anfangsgröße von 5 MB und einer Erweiterungsrate von jeweils 1 MB angelegt:

 

Model DB

Model DB

Insbesondere die Datenbanken der SharePoint Suche, die WSS_Content Datenbanken und auch die ProjectWebApp Datenbank werden u.U. sehr groß und müssen extrem viele Schreibprozesse verarbeiten.

Wenn aber die Erweiterungsrate der Datenbanken nur bei 1 MB liegt ist der SQL Server ständig damit beschäftigt, die Datenbanken zu erweitern. Dies kostet natürlich Performance.

Daher sollte - je nach Verwendungsart der SharePoint Farm - die Anfangsgröße auf Werte zwischen 100 MB und 1 GB gestellt werden. Noch wichtiger ist, die Erweiterungsrate deutlich zu erhöhen auf Werte z.B. zwischen 250 und 1 GB. Damit wird auf einen Schlag mehr Festplattenplatz allokiert, was schneller geht, als wenn ständig 1-MB-weise erweitert werden muss. Und zweitens fragmentiert eine so angelegte Datenbank deutlich weniger.

 

Hinweis:
Wenn nun bereits etliche Datenbanken mit den Standardwerten angelegt wurden, so kann man insbesondere die Erweiterungsrate auch auf jeder einzelnen Datenbank angeben. Hierzu muss man nur die Datenbank in den Eigenschaften aufrufen und unter dem Eintrag "Dateien" / "Files" die Größen ändern:

Datenbank Eigenschaften
Datenbank Eigenschaften

 

7      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)

b2ap3_thumbnail_SQL_Opt_t.jpg

  • wöchentliche Wartung (z.B. am Wochenende)
    • Index neu erstellen mit Sortierung in der Temp DB

b2ap3_thumbnail_SQL_Opt_w.jpg

 

Wichtiger Hinweis:

Was von Administratoren 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, bzw. wenn viele Daten aus einer Datenbank gelöscht wurden. 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.

8     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:

b2ap3_thumbnail_Sperren_von_Seiten.png

-> Lokale Richtlinien | Zuweisen von Benutzerrechten | Sperren von Seiten im Arbeitsspeicher

-> dort das Windows Benutzerkonto für den SQL Dienst eintragen

Bewerte diesen Beitrag:
20
Vorsicht bei den Public Updates von Project Server...
Service Pack 1 für Project Server 2013 und SharePo...

Ähnliche Beiträge

 

Kommentare

Keine Kommentare vorhanden
Bereits registriert? Hier einloggen
Gäste
Samstag, 24. Juni 2017
Für die Registrierung bitte Name und Benutzername eingeben

Sicherheitscode (Captcha)

Go to top