Dienstag, 25. Januar 2011

SharePoint 2010 WarmUp Script

In der 2007er Version von SharePoint war ein WarmUp Skript für SharePoint, zum Beispiel dieses von Joel Oleson, Standard. Denn schon damals hatte es der IIS 6.0 an sich, die Webanwendungen Nachts zu recyclen und somit den Cache zu leeren. Der erste Seitenaufruf einer SharePoint-Seite ist nach dem leeren des Caches sehr langsam. Diese Problemstellung hat sich in Zeiten von IIS 7.5 und SharePoint 2010 nicht geändert. Nun gibt es ja für den IIS 7.5 WarmUp Plugin, für dessen Uninstall ich auch schon einen Blogpost geschrieben habe :-)
Die große Preisfrage ist: Was hab ich getan, nachdem das Plugin weg war? Ganz einfach, ich habe ein PowerShell Skript geschrieben, das durch jedes Web iteriert und über eine Webrequest jede Seite einmal aufruft. Das Skript wird durch eine geplante Windows Aufgabe von einem SharePoint Server ausgeführt.
Eine einfache Version eines solchen Skripts sieht folgendermaßen aus:



  1. Add-PsSnapin Microsoft.SharePoint.PowerShell -erroraction silentlycontinue  
  2.   
  3.  foreach ($webApp in get-SPWebApplication)  
  4.     {      
  5.         foreach ($site in $webApp.Sites)  
  6.         {  
  7.             foreach ($web in get-SPWeb -site $site)  
  8.             {  
  9.                 $request = [System.Net.WebRequest]::Create($web.URL)  
  10.                 $request.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials  
  11.                 $request.proxy = [System.Net.WebRequest]::DefaultWebProxy  
  12.                 $request.ContentType = "application/x-www-form-urlencoded"  
  13.                 $request.Method = "GET"  
  14.         try{  
  15.                     $request.GetResponse().StatusCode  
  16.             WRITE-HOST $request.GetResponse().StatusCode  
  17.                 }  
  18.                 catch [Net.WebException]{  
  19.                     $WebExceptionMessage = $_.Exception.Message  
  20.                     WRITE-HOST "Folgender Fehler ist aufgetreteb: " + $WebExceptionMessage  
  21.                 }  
  22.             }  
  23.         }  
  24.     }  
Im Gegensatz zu den Skripts, die ich beim meiner ersten Suche gefunden habe ist das oben erfrischend simpel und lädt zur phantasievollen Weiterentwicklung ein. Wer das ganze eher pragmatisch angeht, kopiert einfach den Code oben in eine Textdatei, speichert diese mit der Endung "ps1" und führt diese ps1 als Aktion im geplanten Windows Tasks einmal die Nacht nach zwei Uhr morgens aus. Beachtet dabei, dass das Skript nur auf einem SharePoint Server ausgeführt werden kann.

Good luck,

Andreas







Kommentare:

  1. Hört sich gut an, jedoch funktioniert das auf meinem Test Sharepoint (nackter 2010er) nicht.
    "Server nicht verfügbar"

    Wobei aber auch meine Powershellkenntnisse gleich 0 sind. Ich gehe aber mal davon aus etwas ändern zu müssen um das zum laufen zu bekommen?

    AntwortenLöschen
  2. Funktioniert das skript auch mit sharepoint foundation 2010?

    AntwortenLöschen
  3. Hi,

    wir haben auch ein warmup skript erstellt und es für die allgemeinheit auf codeplex unter die ms-pl gestellt.

    Nähere Infos sind hier: http://sharepointtrench.com/tag/spwarmup/

    lg Mario

    AntwortenLöschen
  4. super, funktioniert auch mit sharepoint foundation 2010!

    AntwortenLöschen
  5. Hi,
    klasse Script muss das auf allen Webfrontends ausgeführt werden?

    AntwortenLöschen
  6. Ich bin mir nicht sicher, aber funktioniert dieses Script auch, wenn ein Hardware Loadbalancer im Einsatz ist. Also die Frage, ruft das Script die URLs auf dem lokalen Host auf, oder über den Hardware Loadbalancer?

    AntwortenLöschen