How to patch SharePoint Distributed Cache the proper way

SharePoint 2013 runs a service called the SharePoint Distributed Cache. The underlying application is Microsoft App Fabric. You may be running an old version of App Fabric and it needs your attention now!

An unpatched Distributed Cache may be the cause of a lot of your SharePoint farms performance issues.

The problem: A lot of blogs have misleading and wrong information on how to properly patch the SharePoint Distributed Cache. Following them will only cause you more issues down the track. Out of frustration, I have documented the steps on how to patch the SharePoint Distributed Cache the proper “manual” way with manual checks. If you follow these steps, you will have zero down time and hopefully a better performing SharePoint 2013 farm if you were on a very early App Fabric CU.

Which AppFabric / Distributed Cache CU do I install?
My advice is to generally update AppFabric with the latest providing it fixes issues that you are currently facing. Also, ensure that there are no obvious regressions with it by doing some research on the Internet. To determine the latest App Fabric Cumulative Update, http://www.jeremytaylor.net/tag/cumulative-updates+appfabric

 

Here are the steps on how to patch the SharePoint Distributed Cache:

1. Take stock of your Distributed Cache servers

Get-SPServiceInstance | ? {($_.service.tostring()) -eq "SPDistributedCacheService Name=AppFabricCachingService"} | select Server, Status

 

2. Ensure that Microsoft .NET Framework 4.5 is installed

Regedit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

Ensure the version contains “4.5.xxx”. E.g. 4.5.51209

 

3. Remove server from the load balancer if applicable.

4. Shutdown the service instance on one machine

Add-pssnapin Microsoft.SharePoint.PowerShell
Stop-SPDistributedCacheServiceInstance –Graceful
Remove-SPDistributedCacheServiceInstance

(wait for a few minutes after running this cmd)

5. Run this to check what SharePoint thinks the list of Distributed Cache servers are:

Get-SPServiceInstance | ? {($_.service.tostring()) -eq "SPDistributedCacheService Name=AppFabricCachingService"} | select Server, Status

Reference: http://blogs.msdn.com/b/sambetts/archive/2014/03/19/sharepoint-2013-distributed-cache-appfabric-troubleshooting.aspx

 

6. Patch AppFabric 1.1

Manually run the Cumulative update file. E.g. AppFabric-KB3042099-x64-ENU.exe

It should generate a log file here for troubleshooting purposes if required:

C:\ProgramData\Microsoft\E-Business Servers Updates\Updates\Uninstall<number>\Setup.log

 

7. Check version number

Running the below command should display the desired version level.

(Get-ItemProperty “C:\Program Files\AppFabric 1.1 for Windows Server\PowershellModules\DistributedCacheConfiguration\Microsoft.ApplicationServer.Caching.Configuration.dll” -Name VersionInfo).VersionInfo.ProductVersion

 

8. Apply the Background Garbage collection fix

Skip this step only if the Background Garbage collection fix has been already configured on all SharePoint Distributed cache servers.

To enable the fix, go to the following folder:

%ProgramFiles%\AppFabric 1.1 for Windows Server\

Open notepad and edit DistributedCacheService.exe.config

Paste in the following between the  </configSections> and    <dataCacheConfig> settings in the file:

<appSettings>
<add key=”backgroundGC” value=”true”/>
</appSettings>

Example:

</configSections>

<appSettings>

<add key=”backgroundGC” value=”true”/>

</appSettings>

<dataCacheConfig>

DistributedCacheServiceGarbageCollection

Don’t try it any other way as you will have issues starting the Distributed Cache service.

 

9. Post-patch operations

1. Some additional checks:

  • The Distributed Cache service was stopped earlier

No need to restart AppFabric Caching Service in Windows Services as it should be in the disabled state – since we removed this CacheHost from the Cache Cluster.

 

2. Reset IIS by running: iisreset /noforce

3. Start the service instance

Run:

Add-pssnapin Microsoft.SharePoint.PowerShell
Add-SPDistributedCacheServiceInstance
  1. Verify if the SharePoint Distributed Cache Service has been started on the server:
Get-SPServiceInstance | ? {($_.service.tostring()) -eq "SPDistributedCacheService Name=AppFabricCachingService"} | select Server, Status
  1. Ensure that the Cache host is up and running:
Use-CacheCluster
Get-CacheHost

AppFabricServiceStatus

10. Add back the server in the load balancer

11. Restart from 1 on the next machine

12. Don’t forget the rest of your SharePoint farm has AppFabric installed by default (even though not running). AppFabric on those servers need to be updated too without stopping or starting any services.
For this, run steps 6, 7 & 8 above.

 


Converting Vmware vmdk to Hyper-V vhd

Scenario:

You have a vmdk file for Vmware and want to convert it to a Hyper-V compatible hard disk file such as vhd.

 

Solution:

Download Microsoft Virtual Machine Converter Solution Accelerator (4.3MB)
http://www.microsoft.com/en-au/download/details.aspx?id=34591

It works on Windows 7, Windows Server 2008 R2, Windows Server 2012

Once installed, run the following:

In a command prompt window, go to the path to MVDC.exe (32bit is usually installed here by default – C:\Program Files (x86)\Microsoft Virtual Machine Converter Solution Accelerator).

MDVC.exe ‘path to vmdk file’ ‘path to vhd file’

Example:

cd '.\Program Files (x86)\Microsoft Virtual Machine Converter Solution Accelerator'
.\MVDC.exe 'D:\Temp\SERVER123.vmdk' 'D:\Temp\SERVER123.vhd'

Once your file is a vhd, you can easily import it into Microsoft Hyper-V and convert it to a vhdx.

 

  • If you want to convert several machines at once, then look at the Migration Automation Toolkit.

https://gallery.technet.microsoft.com/Automation-Toolkit-for-d0822a53

The Migration Automation Toolkit is a collection of PowerShell scripts that will automate conversions using MVMC and it is back ended by a SQL instance (SQL Express will work). You can use it to convert several machines at once, on a single server – or scale it out and execute conversions on many servers at the same time.


ULS log viewer for SharePoint 2013

Good news for all the on-premises SharePoint Infrastructure Admins and Developers. An improved ULS Log viewer for SharePoint 2013 has been released a few days ago. I was concerned for a couple of years that there wasn’t any movement on updating my number 1 favourite SharePoint tool. However, I did see a video where Bill Baer there was a hint of how bad the tool was and they’d do something about the tool.. so here it is – a new ULS Log Viewer……

Download it here:

http://www.microsoft.com/en-us/download/details.aspx?id=44020

Some new features:

1. Monitor multiple servers simultaneously

ULSLogViewer-SharePoint2013

2. Locate specific log entries via command line

3. Highlight and personalise the output if a filter match occurs

Some fixes I have noticed:

1. More stability when working with the filters

2. Multiple fixes such as filtering on pause state

Source: http://blogs.technet.com/b/wbaer/archive/2014/08/22/uls-viewing-like-a-boss-uls-viewer-is-now-available.aspx

Can we use it for SharePoint 2010?

Yes! It works well for SharePoint 2010. However, you would need to ensure that .NET 4.5.1 is installed on the server you run ULS Viewer on. With SharePoint 2010, .NET 3.5 is used and you might not find .NET 4.5.1 on your SharePoint 2010 servers.

Download Microsoft .NET Framework 4.5.1 (Offline Installer) here: http://www.microsoft.com/en-au/download/details.aspx?id=40779

I have tested it successfully on Windows Server 2012, Windows Server 2012 R2 and Windows Server 2008 R2.


OneDrive for Business Groovy sync tool

Previously known as SkyDrive Pro, now more appropriately named OneDrive for Business, builds on a solid foundation of years of sync technology.

In terms of functionality, I am quite impressed with the OneDrive for Business functionality. It keeps getting better with each new release.

I use my OneDrive for business syncing various SharePoint Document Libraries with multiple organisations in different folders on my laptop…quite handy for people on the move.

Download:
Download OneDrive for Business standalone sync client for SharePoint 2013 and SharePoint Online.

Click here to download OneDrive for Business:

http://support.microsoft.com/kb/2903984

Use the license key:
When I set up my OneDrive for Business, I normally choose to use the license key rather than using my O365 login to install the app. Here is the license key: 3V9N8-W93CC-FQPB8-Y9WVF-TVGJ3

Limits:

There are some limits on syncing OneDrive for Business and site libraries, according to the OneDrive for Business help:

Note the following limitations related to syncing OneDrive for Business and other site libraries to your computer:

  • You can sync up to 20,000 items in your OneDrive for Business library, including folders and files.
  • You can sync up to 5,000 items in site libraries, including folders and files.
  • In any library, you can download files up to 2 GB.

OneDrive for Business is Gold:
It’s nice to see good ol’ Groove Networks still carrying on behind the scenes and Microsoft building upon a solid foundation of sync software, positively looking at it. :)

Personally, I have been very impressed by Groove since it was released! Groove was brilliant and way ahead of others at that time.

Take a look under the bonnet:

OneDriveforBusiness-Groove1

Love it!

OneDriveforBusiness-Groove-2

Groove Logo:

OneDriveforBusiness-Groove-3

 

Well, One Drive for Business certainly is not a new kid on the block. I suggest you give it a try if you haven’t in its newest incarnation!


IISRESET across SharePoint farm servers

Here is something I use when I want to perform an IISRESETacross an entire SharePoint farm. Its useful if you have a large SharePoint farm.
Oh – yea, this will take down your farm while the IISRESET is restarting the services, so its best to test this on a non production environment first. Ensure you have an outage/agreed maintenance window to perform this task on a production farm.

All you got to do is spin up PowerShell on any SharePoint server in the farm and run this:

Write-Host -ForegroundColor Blue “IIS will  be reset across the entire farm”
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
[array]$servers= Get-SPServer | ? {$_.Role -eq “Application”}
$farm = Get-SPFarm
foreach ($server in $servers)
{
     Write-Host -ForegroundColor Yellow “Attempting to reset IIS for $server”
        iisreset $server /noforce “\\”$_.Address
        iisreset $server /status “\\”$_.Address
        Write-Host
        Write-Host -ForegroundColor Green “IIS has been reset for $server”
        Write-Host
}
Write-Host -ForegroundColor Green “IIS has been reset across the SharePoint Farm”
Start-Sleep -Seconds 5
Write-host

 

Reference: http://wellytonian.com/2012/04/iis-reset-your-whole-sharepoint-farm/


SharePoint ULS log viewer tool comparison and verdict

There has been some confusion on which SharePoint ULS log viewer to use when troubleshooting SharePoint issues. In May 2010, I blogged about the SharePoint 2010 ULS Log viewer published by Microsoft (http://www.jeremytaylor.net/2010/05/03/sharepoint-2010-uls-log-viewer).

SharePoint 2013 Alert: In August 2014, I blogged about a re-released ULS Viewer for SharePoint 2013 enhanced by Microsoft.

Read more about it here: http://www.jeremytaylor.net/2014/08/27/uls-log-viewer-sharepoint-2013/

In this post, I have discussed all the ULS log viewer tools here with screenshots and my final verdict..

Continue reading


SharePoint ULS log viewer

For the updated ULS Viewer go to: http://www.jeremytaylor.net/2014/08/27/uls-log-viewer-sharepoint-2013/

When using SharePoint 2010 or SharePoint 2013, you will notice much said about the “ULS logging”.  Here is a tool that greatly helps when troubleshooting ULS log files. Its from Microsoft but its unsupported now as they have stopped further development / improvements on it.

Summary

ULSViewer allows users to open a ULS log file and display its contents in a user friendly format. Users can then perform advanced functions such as filtering, sorting, highlighting, loading logs, appending logs, etc in order to single out the data that is important to the user. This information can be used to diagnose problems with machines running ULS services, or to monitor machines and the events they create in realtime.

Continue reading