BLOBs und Performance in SharePoint
avatar

Hummelhummel CC BY-SA 3.0, via Wikimedia Commons: BLOBs aka Container

Hummelhummel CC BY-SA 3.0, via Wikimedia Commons: BLOBs aka Container

Wie Sie wahrscheinlich wissen speichert SharePoint alle Inhalte in Inhaltsdatenbanken, einschließlich “Binary Large Objects” (BLOBs), also unstrukturierte Daten wie etwa Dokumente in einer Bibliothek, Anhänge in Listen, JavaScripts und CSS Dateien. Die BLOBs werden in separaten Tabellen gespeichert und nicht gemeinsam mit den Metadaten der Dokumente und Listelementen.

Das sollte Ihnen einen Hinweis darauf geben wie sich BLOBs auf die SQL Performance auswirken. SQL Server als Produkt ist für den Zugriff auf kleine (8KB oder weniger) strukturierte Daten optimiert und performed am besten beim Zugriff auf diese. BLOBs stellen jedes Mal wenn eine Lese- oder Schreibvorgang ausgeführt wird, eine Belastung für die CPU und RAM Ressourcen eines SQL Servers dar. In diesem Artikel beschäftigen wir uns mit den Lesevorgängen, diese sind nicht so kostenintensiv wie Schreibvorgänge, treten aber in der Regel häufiger auf.

Die einfachste Möglichkeit um die Performancekosten bei Lesevorgängen auf BLOBs zu senken ist die Aktivierung bzw. Konfiguration des IIS BLOB Caches. Dieser wird in der Konfigurationsdatei der einzelnen Web Applikationen, für spezifische Dateitypen aktiviert. Die Einstellung befindet sich in dem Element „BlobCache“ und cached per Standard gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|themedbmp|themedcss|themedgif| themedjpg|themedpng|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4| mpeg|mpg|rm|rmvb|wma|wmv|ogg|ogv|oga|webm|xap Dateien.

Der IIS BLOB Cache ist per Standard deaktiviert und muss bei Bedarf aktiviert werden. Die Einstellungsmöglichkeiten in der Konfigurationsdatei (web.config) der Web Applikationen gestalten sich wie folgt:

  • Location: Der Cache Pfad, SharePoint erstellt für jede Web Applikation einen eigenen Ordner anhand der ID der Web Applikation, daher ist es nicht notwendig einen eigenen Ordner für jede Web Applikation zu erstellen.
  • Path: Anhand der Dateiendungen werden hier die zu speichernden Dateitypen festgelegt;
  • maxSize: Bestimmt den Wert in GigaByte der Cache Grösse.
  • max-age: Ist eine optionale Konfiguration der Lifetime des Client Caches in Sekunden, per Standard setzt das IIS hier den Wert 84600.
  • Standard: <BlobCache location=“C:BlobCache14″ path=“.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|themedbmp|themedcss|themedgif| themedjpg|themedpng|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3| mp4|mpeg|mpg|rm|rmvb|wma|wmv|ogg|ogv|oga|webm|xap)$“ maxSize=“10″ enabled=“false“ />

Der Cache ist für anonyme Benutzer optimiert, kann aber auch für Intranet Lösungen angepasst bzw. optimiert werden, z.B. muss in der Regel bei JavaScript und CSS Dateien keine Rücksicht auf Berechtigungen genommen werden und wir können SQL Roundtrips vermeiden um die Berechtigungen zu überprüfen indem wir den jeweiligen Speicherort für alle Benutzer freischalten. Dies kann auch programmatisch per Powershell geschehen, hier ein Beispiel für die Style Bibliothek einer Webseitensammlung:

$web = Get-SPWeb -Identity „http://intranet.contoso.com“

$list = $web.Lists.TryGetList(„Styles“); 

$list.AllowEveryoneViewItems = $true

$list.Update()

 Ein weiterer interessanter Punkt ist wie der Front End Server validiert ob seine gespeicherten Daten noch gültig sind. Hier wird standardmäßig alle 5 Sekunden überprüft (dies ist konfigurierbar) ob eine Datei die der Cache vorhält geändert, umbenannt oder gelöscht wurde.

Weiterführende Informationen:

IIS Blob Cache komfortabel via PowerShell konfigurieren

Konfigurieren von Cacheeinstellungen für eine Webanwendung in SharePoint Server 2013

Schreibe einen Kommentar