Friday, September 12, 2014

SharePoint 2013: Table SPDistributedCacheCalls_Partition9 has XXX bytes that has exceeded the max bytes XXX

Problem

You see the following event appear in a SharePoint 2013 web front server application log:
Log Name: Application Source: Microsoft-SharePoint Products-SharePoint Foundation Date: [Date/Time] Event ID: 8319 Task Category: Usage Infrastructure Level: Critical Keywords: User: [Farm Service Account] Computer: [A farm web front end server] Description: Table SPDistributedCacheCalls_Partition9 has 461774848 bytes that has exceeded the max bytes 460175067 Event Xml: ...

This event appears in the application at about 5 minute intervals.  You then check the ULS logs and find the following:
Table SPDistributedCacheCalls_Partition9 has 461774848 bytes that has exceeded the max bytes 460175067
also appearing at about five minute intervals.

Solution
  1. Update usage events that you want to monitor
    1. Login to a farm server using the SharePoint Setup User Administrator account.
    1. Launch Central Administration.
    2. Go: Monitoring > Reporting > Configure usage and health data collection.
    3. Update the usage events you want to monitor. Unfortunately, there is presently (from my searching) no Microsoft article that clearly describes these events.
    4. Click OK.  The changes you make here will not be implemented immediately, as they are scheduled as jobs.
  2. Update usage event logging retention periods
    1. While still logged into the server, launch a SharePoint Management Shell with elevated privileges.
    2. Execute the command, Get-SPUsageDefinition.  This will list all of the usage events, whether they are being logged and their retention periods.
    3. Execute this command to set the retention period for a single definition:
      Set-SPUsageDefinition -Identity “[name of definition]” -DaysRetained [number of days]
      If you enter the display name of the usage definition, use quotes. If you use its ID, no quotes are necessary.  For example, changing the retention period for the Task Use definition:
    4. Execute this command to set the retention period for all usage definitions at the same time:
      Get-SPUsageDefinition | ForEach-Object {Set-SPUsageDefinition -Identity $_.name -DaysRetained [number of days]}
      For example, to change them all to 7 days:
  3. Force changes to be implemented promptly
    1. Back in Central Administration, go: Monitoring > Reporting > Configure usage and health data collection.
    2. Scoll down a bit and look for Log Collection Schedule.
    3. Click this link.
    4. Click on a job definition listed here, then click on its Run Now button.  Repeat this for the second job definition.  Even this will not put your changes into affect immediately, but will force the job to run after the current job is completed.
References
Notes
  • When I experienced this error for my production farm (400 users), it was sufficient for me to configure usage definitions like so in order to resolve this error:

No comments: