2

I've got a very slow SharePoint 2013 environment. Pages load very slowly, even using a warm up script. My suspicion is that the current implementation of the Distributed Cache Service is to blame.

The SharePoint farm consists of 2 Web Servers and one Database Server.

Services summary:

WFE1:

  • Distributed Cache Service,
  • SharePoint Server Search,
  • Search Host Controller Service,
  • Managed Metadata Web Service,
  • Secure Store Service,
  • Claims to windows Token Service,
  • Central Administration,
  • User Profile service,
  • ...

WFE2:

  • Distributed Cache Service,
  • Central Administration,
  • Claims to Windows Token Service
  • ...

Both web servers had their Physical Memory increased to 14 GB. But the Distributed Cache Service Memory Allocation was not adjusted accordingly.

Distributed Cache Service Memory Allocation:

  • WFE1: 180 MB
  • WFE2: 180 MB

At this moment the it's a Cache Cluster that uses Collocated mode.

Could the low amount of memory size allocation to the Distributed Cache server be the cause of the slow SharePoint 2013 environment?

I would like to increase the Distributed Cache Service memory allocation, since I hope this will result in a significant performance increase.

The catch however is that WFE1 usually has a memory load of 85%, and is running the Search Service. However WFE2 is only using about 56% of its memory usage.

I read in the file "Plan and use the Distributed Cache Service" that:

  • Do not run the following services on the same server running the Distributed Cache service: SQL Server, Project Server, Excel Services and Search services.
  • When the Distributed Cache service runs on a server together with other services and the server’s memory resources near 95% utilization, the Distributed Cache will start throttling requests. This means that the Distributed Cache service will no longer accept read or write requests until the server utilization reduces to approximately 70% utilization.

Does this mean that I can't increase the memory size used by the Distributed Cache Service on WFE1 ?

Should I run the Distributed Cache Service dedicated on WFE2? Or should I try an convince people we need an extra server for dedicated Distributed Cache?

Any help is highly appreciated. Thank you in advance for your suggestions.

  • 1
    are both WFE loadbalanced? – Waqas Sarwar MVP May 21 '15 at 14:38
  • To be honest, I don't know. Do you know for a way to check? – TempaC May 21 '15 at 14:41
  • 1
    I am not sure, ping the url of web app and see on which server's IP address it lands – Waqas Sarwar MVP May 21 '15 at 14:42
  • I've pinged it a couple of times using a server not located in the SharePoint farm. I keep getting the IP of WFE2. I think if it were load balanced, I should receive the IP of WFE1 at least once. But I only receive IP of WFE2. I will check tomorrow if one of my colleages knows for sure. For the moment let's assume it is not load balanced. – TempaC May 21 '15 at 14:52
  • 1
    from your configuration and test , if it is not load balanced then WFE2 will be the front end. You should stop the DC on WFE1. Also use the Developer Dashbaord, in order to check where page loading spending the time. – Waqas Sarwar MVP May 21 '15 at 14:55
1

When you create a cache host, it should use 10% of the memory size. I say should, because that doesn’t happen all the time. Sometimes it uses 50% the memory, and sometimes 5%. Don’t ask why.

But you can see the configuration of the cache cluster if you run Export-CacheClusterConfig.

Use-CacheCluster
Export-CacheClusterConfig -path C:\Temp\CacheClusterConfig.xml

In the CacheClusterConfig.xml you can see the dataCache element and its property size.

<dataCache size="Small">

The size attribute may be small, medium or large according to Cluster Configuration Settings (Windows Server AppFabric Caching).

Close to the end of the file, you see the cluster hosts in the hosts element. You can change the size attribute and make sure the account attribute is correct. I’ve seen this having the wrong account more than once.

IMPORTANT! Before you import the configuration file again, you need to stop the cache cluster by running:

Stop-CacheCluster

Verify that the cluster have stopped either by Get-CacheHost or services.msc. When you know it has stopped, run:

Import-CacheClusterConfig -path C:\Temp\CacheClusterConfig.xml

Followed by

Start-CacheCluster

Again, see that the cache cluster starts by running

Get-CacheHost

My own reference: Distributed Cache Cluster Manager

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.