Regular maintenance of a Sitecore site is important to help keep it performing optimally.
In this article I explore 10 Sitecore website maintenance activities that should be performed on a monthly basis. While I focus on Sitecore specifically, many of these activities should be performed on any site regardless of the underlying CMS.
The monthly maintenance activities that should be performed on a Sitecore based website are:
Backups are a critical element in a system continuity plan. While modern infrastructure is highly reliable, outages and disasters still occur and you need a strategy to restore a system if something unexpected happens. Human error and malicious actors also pose a risk to systems so we need to be ready for anything.
In the event of an infrastructure failure you will want a quick path to recovery. Human error is also a cause of system outages and restoring from backup may be the only way to restore service.
In my case have Azure backups running daily on a Sitecore VM. I check the backup status in the Azure Portal monthly to ensure it is running smoothly.
The Master and Core databases are essential to the functioning of a Sitecore site. You will want to ensure these databases are backed up regularly and the backups are stored in a resilient location.
I upload database backups to an Azure storage blob. Azure storage explorer is a free tool provided by Microsoft that makes transferring large files like databases to the cloud very quick.
A great place to start when assessing the health of a Sitecore website, or any website is with availability and usage statistics. Answer the following questions about a site:
If site traffic is not performing as expected, it is important to understand why. Analytics are the first place to start in this investigation.
Site monitors can provide:
I use uptimerobot to monitor my sites. As a regular maintenance activity I will test the monitor against the test site to validate that it is functional. The production site monitor should also be checked, however if site availability is measured against an SLA this may not be optimal. In this case you can use a test site to check your monitoring. Make sure that your site analytics align with the uptime report, if analytics show a traffic drop off indicative of an outage but the site monitor does not there may be something wrong with your monitor.
Based on your analytics, you may wish to specifically monitor the more heavily visited pages on your site as outages to these pages would be more impactful to your users.
The following image show the last 30 days availability and average response times for Tangenttechnologies.ca. There are some spikes in response time, but generally the response time remains flat so I have no concerns about this graph.
A customer may be interested in a site health report with metrics such as site availability, page load speeds, and site usage and run costs. I believe it is useful to create such a report on a monthly basis and to include recommendations to address issues and the estimated time and effort to apply these recommendations. Driving constant improvement is the key to keeping a site performant.
Regularly check the resource utilization and health events of underlying infrastructure. CPU, Memory and disk usage trends should be watched to ensure these resources are available and will be into the future.
The following shows the resource health log of an Azure VM. You can see a health event occured that caused a reboot. It is important to understand the cause of these events even if no site outage occurs.
Along with ensuring CPU and Memory are not acting as bottlenecks, you'll want to make sure this is ample disk space. IIS and Sitecore log files should be managed to ensure they do not fill the disk. By default, Sitecore retains 30 days worth of log files. This duration is set in the Sitecore.config file. The Sitecore cleanup agent can be configured to retain for a shorter duration if necessary, however your best bet is to ensure your log files are as free of errors and unnecessary messages as possible.
I am running a Sitecore site on a Virtual Machine in Azure. I can keep track of various system metrics including disk space availability using Azure Insights. The following is a screenshot of the current disk utilization on one of my Azure VMs.
Azure also allows you to send alerts on infrastructure events, such as low disk space. There are default alert settings that will check CPU, memory, disk and network usage and send email alerts if a threshold is exceeded.
You want your Sitecore error logs to be clean. There should be no exception stack traces or debug messages in the log files. Make sure you review your most recent Sitecore logs. Log files that are particularly large are also worth looking into as they may contain a set of error events. You may even wish to add log file monitoring so that errors can be actively managed when they occur.
Sitecore patches are essential to keep a site secure and running error free.
Sitecore hotfixes must be applied ad hoc. I like to use sitecorehotfixversionselecor.com to find hotfixes for my specific Sitecore version.
Along with backing up the Sitecore databases, regular DBA maintenance is also key to ensuring a healthy Sitecore website. Some database maintenance can be completed within the Sitecore backend. Navigate to the Control Panel to access the maintenance apps. The following shows the database maintenance options.
There is a Sitecore table known as the 'Links' table that stores links between items for each of the Core, Master and Web databases. This table is generally kept up to date via Sitecore items events (item:copied, item:deleted, item:saved). If you are moving items via packages, performing an upgrade or updating items programmatically you may need to rebuild the link database.
There are a number of functions within Sitecore that are based on search. Content authors rely on search to find items with the Content Manager. Your site may provide a site search implemented with the Sitecore search. In order to keep the search running optimally it is recommended that the search index be rebuilt regularly.
Regularly optimizing the database can reduce its size and improve performance. This includes tasks like cleaning up unused data, updating statistics and defragmenting indexes.
To calculate the fragmentation percentage of your indexes you can run the following T-SQL using SQL Management Studio
SELECT S.name as 'Schema', T.name as 'Table', I.name as 'Index', DDIPS.avg_fragmentation_in_percent, DDIPS.page_count FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS DDIPS INNER JOIN sys.tables T on T.object_id = DDIPS.object_id INNER JOIN sys.schemas S on T.schema_id = S.schema_id INNER JOIN sys.indexes I ON I.object_id = DDIPS.object_id AND DDIPS.index_id = I.index_id WHERE DDIPS.database_id = DB_ID() and I.name is not null AND DDIPS.avg_fragmentation_in_percent > 0 ORDER BY DDIPS.avg_fragmentation_in_percent desc
Here is a screen capture of the output
You can see that the PublishQueue table index ndxID in this example is 70% defragmented. To fix this you can use SSMS to reorganize the index. Make sure to defragment indexes during off hours to reduce impacts to users.
Check and address the following in the Sitecore media library
Load Tests and Performance Tests are a great way to set a performance baseline and keep track of performance trends.
System performance is an important part of ensuring an optimal user experience. It is also a way to keep infrastructure costs as low as possible. Inefficient systems cost more to run.
Google lighthouse is a great way to spot check page performance or to do ad hoc performance testing. Lighthouse creates a performance report with suggestions to improve page load times.
Leverage your site analytics to direct your performance tuning efforts to the most visited pages to optimize value to users. Large images are typically the biggest performance issue for sites.
Remember that Google SEO is also measuring you page bandwidth usage and load speeds for both desktop and mobile experiences.
There are a number of reports that should be run regularly to identify content issues. Sitecore provides the following:
I highly recommend the Sitecore Powershell ISE module. It has a number of reports to audit both the content library and media library. If your site has a content authoring workflow setup with item versioning and locking, the workflow reports at very helpful for finding content items that are stalled. The Content reports available are:
The Powershell ISE content audit can be accessed from the Sitecore Desktop under Reporting Tools -> Powershell Reports -> Content Audit
The following shows the parameters for the Items Last updated report
Sitecore provides a handy report to find broken links in content.
The following screen capture shows the Broken links report for the master database. The broken links are found in rich text content where links were manually added either incorrectly or have changed since being added. I like to find an verify the error in the actual content before taking action.
Reviewing content can be aided by analytics reports.
Related to the content review, analytics can help show where there might be content gaps. Analytics should be reviewed within the context of the website goals, so ensure these are in place and used to set the context for the review. The steps in an analytics review are:
Collect Data: Use website analytics tools such as Google Analytics to collect data on your website's performance.
Review Traffic Sources: Analyze the traffic sources to determine which channels are driving the most traffic to your website, such as search engines, social media, referrals, etc.
Analyze User Behavior: Review how visitors are interacting with your website, including page views, bounce rate, time on site, and conversion rates.
Check for Technical Issues: Look for any technical issues that may be affecting your website's performance, such as broken links, slow page load times, or errors.
Review Content Performance: Evaluate how your website content is performing by analyzing metrics such as page views, time on page, and engagement rate.
Analyze Conversion Rates: Analyze your website's conversion rate to determine if visitors are completing the desired actions on your website, such as making a purchase or filling out a form.
Identify Opportunities: Identify opportunities for improvement based on the data analysis and develop a plan for implementing changes.
Create Reports: Create a report summarizing the findings of the monthly analytics review to share with stakeholders, including graphs, charts, and key takeaways.
Repeat: Continue to conduct monthly website analytics reviews to track progress and make ongoing improvements to your website's performance.
If your site has a search box, make sure your analytics are capturing the search terms that users are entering, these can provide great insight into what content your site should be providing.
If you are driving public traffic to your site through site content like a blog, you'll want to ensure your search engine (Google) page ranks are improving. I rely on 2 tools to check that my content is properly indexed by search engines and that there are no technical issues that may be impacting my search rankings. They are, Google Search Console and Ahrefs. Ahrefs will regularly audit and email a report with findings and recommendations to improve site SEO.
Use Google Search console to see how your content is being ranked by Google and if it is trending up or down. This data is valuable to drive your content review, pay special attention to articles that were once ranked well, but have been slipping. Slipping content may need a refresh. When it comes to SEO ensure you apply the following checklist to your content:
Verify the content is up to date and still valid, the world is always changing and your content needs to keep up.
Ensure your articles have an answer target. This is a short paragraph that gives the reader a quick answer to their question and should appear at the top of the article. Google may choose to use this as an answer 'snippet' which is highly advantageous to your search ranking
Check grammar and spelling. Automated tools like grammerly are helpful, but make sure you review the changes they are making because they aren't always right
Ensure your articles have helpful and relevant images or diagrams. Original photographs are preferred, and be sure to add descriptive alt text to help search engines identify them.
Subheadings need to read like headlines, not document outlines. Google may choose to select a section of your article to surface in response to a search query, a heading that stands on its own will help Google do this.
Interlinking - Grouping site content and linking between articles helps increase the rate at which articles are ranked by Google and increase clicks to other content.
Google search console provides a report that measures your site's page performance. This is know as the Page experience report and it is provided for both the desktop and mobile experiences of you site pages. Use this report to help focus your optimization efforts and ensure that your page load speeds are sufficient for Google.
The following is a screen capture of the Page Experience report for this site. As you can see all pages are within Google's threshold for performance. Check this monthly because changes that affect site performance may occur, or Google may change the thresholds. If your page experience is not satisfactory this may affect your SEO ranking.
Ahrefs is an SEO tool with a free tier that will run a regular audit on your site. This tool is known as AWT and from the ahrefs site it will:
The following is an example of the Site overview report from Ahrefs. It shows how your site has been performing over time based on Ahrefs data (note that Ahrefs does not have access to your Google analytics, so this data is approximate).
Don't let regular Sitecore maintenance fall by the wayside make a conscious effort to check in on a Sitecore site at least once a month. Remember to regularly:
See my other Sitecore articles for more Sitecore tips
Migrating Sitecore User Accounts
Using Sitecore Webforms Datasources and Renderings
Photo by Mike Newbry on Unsplash