LemonBits

  • Home
  • About
  • Contact me
SharePoint

SharePoint Best Practices

Frane Borozan - March 19, 2019

Having a solid environment is an important prerequisite for well maintained SharePoint installation. Designing optimal installation requires planning in details. If the installation is not done properly, you can later on experience strange issues, performance issues or just both. The set or best practices I will mention below are built for the SharePoint on-premises, in the near future, I am planning to do the same best practices for SharePoint Online as well.

The biggest problem with the best practices is they are all over the place, you have official SharePoint best practices from the Microsoft, you have a lot of independent consultants and MVPs with recommendations so you need to spend quite a while to find relevant information.

I will separate SharePoint best practices into a few physical/virtual layers, so it is easier for you to understand on which layer you need to apply what best practices. This is important because I saw a dozen times that people who are in charge of SharePoint don’t have access to the SQL server, to the virtualization layer below the windows server and to the network. This is a way to go, but then different teams need to apply a different set of best practices to the different SharePoint components.

SharePoint Virtualization layer

In the nova days, the SharePoint is installed mostly as virtualized systems. I have seen SharePoint servers virtualized, but some bigger deployments keep even today SQL server on the bare metal. We will come to that later on. SharePoint most popular virtualization platform is VMware followed by the Hyper-V. 

For the virtualized environments the best practices are: 

  • Do not use Hyper-V Dynamic Memory or VMware memory overcommit because it is not supported by the SharePoint Server platform
  • Use VLANs to separate the traffic, use one VLAN for central admin, other for user sites because this will make your SharePoint more secure 
  • Do not use Hyper-V or VMware Time Synchronization because sometimes SharePoint timer jobs can lead to unpredictable behavior 
  • Do not use snapshots. Snapshots is not BACKUP! Using snapshots also can quite degrade performance of the virtualized machines. Snapshots can be used in TEST, DEV or UAT but not in production. Snapshots always trigger weird behaviors of the virtual machines that you are not always to detect from inside the virtualized machine because it can throw completely illogical errors 
  • Jumbo frames on the network level are recommended 
  • Some people recommend set page file manually. I do not recommend setting page files manually as in Windows Server 2012 R2 and better handles this better then the manual setting
  • On the Hyper-V hosts set power plan to high performance. default balanced plan is always activated. This option allows you 15% higher throughput
  • Configure windows server to best performance from default best appearance in the system settings

SharePoint SQL Server layer

sharepoint best practices SQL

The performance of SharePoint Server is heavily dependent on SQL Server. Poorly designed server, sitting on the poorly configured hardware (or virtualization layer) can lead to various performance problems in regards to SharePoint farm. The most important thing is DO NOT USE default SQL server configuration. It is not optimized for the SharePoint. 

Follow these rules to check the recommend SQL server best practices for the SharePoint: 

  • use NTFS 64 KB allocation units instead of the 4 KB allocation units. You can save a 30% performance penalty by choosing the correct formatting option for your SQL Server machine. This is one of the most important settings to check most of the people don’t care or just overlook
  • Prioritize the disks with different speeds in this order: 
    • 1. TempDB Data Files and Transaction Logs
    • 2. Content Database Transaction Logs
    • 3. Search databases
    • 4. Content Database Data Files
  • Put the TempDB Data Files on the flash drives if possible by any means, not shared by the other volumes. Create separate LUN of separate physical disk
  • DO NOT set the logs on the same drive as the content DB files again for performance reason 
  • MAXDOP must be set to 1 for SharePoint to work normally. Period. 
  • Restrict the memory consumption on the SQL server. DO not leave this setting to be managed by the SQL server
  • DO NOT use the  auto create and auto update statistics on the SQL instance because is not supported
  • DO NOT use default autogrowth. For example, try starting out with 256MB for your growth settings, and monitor how data is growing, set limit to be higher if needed. Setting the autogrowth setting too low will cause frequent database growth, which is not good for performance, but setting it too high will cause performance issues during the autogrowth (because it takes too long to complete and reserve the space). 
  • Use the named instance 
  • I’ve saw people for security change the default SQL port as well 
  • Authentication should be the Windows authentication 
  • The number of data files should correspond to the number of processor cores (minimum 4/maximum 8)
  • The initial size of the LDF file should be set to 25% of the initial MDF initial size. Make sure that the LDF value can be divided by eight out of the MDF value
  • set the initial size of the TempDB to 25% of the size of the largest content database
  • Make sure your databases are backed up on regular intervals. I recommend:
    • Daily Full Backup of the content databases including the Consistency Check
    • Transaction Log Backups every 60 minutes
    • Weekly backup of system databases
  • Use the SQL server aliases. This will ease your job in future when you need to migrate SQL server somewhere else
  • Use SQL failover clusters where possible 
  • You wouldn’t believe but #1 reason even today for SharePoint going offline is disk space on the SQL. MONITOR YOUR SQL SERVER DRIVES!

SharePoint Application/Web Front End layer

sharepoint best practices

Now when we set the two underlying layers we need to make sure our SharePoint layer is configured according tot he best practices. I won’t recommend how many WFE/APP servers because that heavily depends on your environment. The simplest scenario would be 1WFE, 1APP and 1SQL server. Depending on your budget and the number of users you will support you can scale up the frontend servers, app server and the SQL servers as well. There are numerous of different scenarios so the best would be to search for architecture design of the SharePoint farm so you can find the optimal scenario. Also please feel free to contact me directly with your requirements, I will help you. 

  • don’t use the SharePoint Configuration wizard :-) Use the PowerShell instead
  • DO NOT use the same service account for everything. Use the different account for installation and configuration, for the Timer service, for the app pools, crawl and profile Sync. There is a great article by Vlad Catrinescu on what service account to use here. 
  • DO NOT use more than 5k site collection per content database 
  • Set quotas on the SharePoint Web Application Level
  • Patch your SharePoint farms regularly. Patch the Windows servers, patch the SQL and the SharePoint as well. 
  • change the default location of the ULS logs. SharePoint logs can generate quite a lot of data so using this on the system drive can decrease the performance of the whole SharePoint environment
  • Disable Loopback check
  • Enabling BLOB Cache in SharePoint. This is a popular way of improving performance of the SharePoint. The BLOB cache is a disk-based cache that stores binary large objects (BLOB’s) on the web server to reduce the load on the database server by avoiding unnecessary round trips to that server
  • Enable Publishing Cache because can improve performance for users on SharePoint sites 

As you can see there are quite a lot of SharePoint best practices that you need to pay attention to. 

Do you have a setting that I have missed maybe? Let me know in the comments below on what settings you set on your SharePoint servers? and I will update the article!

BTW there is an application that will do all this checks automatically for you here. The biggest problem with the SharePoint best practices is there are to many of them, If you have few farms it can be quite consuming to perform the first check and regular checks. The SPDocKit will check your farm automatically for the SharePoint best practices and will alert your if your farm is not compliant. This is a great time saver!

 1 0
Share Now

Frane Borozan

Helping SBC administrators kick-ass Google+

Leave a Reply Cancel Reply

Your email address will not be published. Required fields are marked *

Previous Post Top SharePoint News
Next Post Microsoft Edge add google search engine

Connect with me on

Latest Posts

  • SharePoint Agents: Revolutionizing Workplace Collaboration

  • Microsoft Data Security Posture Management for AI

  • SharePoint agents are very use to create and use

  • SharePoint Agents

  • BEWARE OF THE INACTIVE ONEDRIVE ACCOUNTS!!!

  • Microsoft’s version of the GenAI, Copilot is now available through WhatsApp

  • Control Copilot access to content

  • 🌟 Increasing Microsoft 365 Governance Adoption with custom solution branding🌟

  • What are the news from the Microsoft 365 community conference

  • Restricted SharePoint Search

Recent Comments

  • Christoph Juli on VPN doesn’t work aka how to clear ARP cache on the computer when you connect to the VPN
  • Amir on The curious case of saved-critical Hyper-V machines in Hyper-V Manager or Incomplete VM Configuration in Virtual Machine Manager
  • Frane Borozan on Downloads folder slow to load/sort in Windows 10
  • güvenlik kamerası on Downloads folder slow to load/sort in Windows 10
  • Laki Lakovic on Opening group policy editor on a remote computer and forcing GP Update
  • Diane on Opening group policy editor on a remote computer and forcing GP Update
  • Manoj B on Differences between L1, L2, L3 system administrator guidlines
  • Travis Vroman on Teams slow
  • Yossi B on Remote Desktop Services Manager 2016
  • astha on SharePoint audit logs
  • Frane Borozan on Installing Remote Desktop Services 2016
  • Joe Zhou on Installing Remote Desktop Services 2016
  • Pino on Installing standalone Remote Desktop Gateway on the Windows Server 2012 R2 without complete Remote Desktop Services infrastructure
  • Eddy Wilson on Windows 10: Share a VPN Connection
  • haleybri.com on Remote Desktop Services Manager 2016
  • Atif on Remote Desktop Services Manager 2016
  • Tan Vu on KB2919355 The update is not applicable to your computer
  • Vinay on Installing Remote Desktop Services 2016
  • JOEL FERDY FEUBI TABOUE on KB2919355 The update is not applicable to your computer
  • Delmar on Installing standalone Remote Desktop Gateway on the Windows Server 2012 R2 without complete Remote Desktop Services infrastructure
  • Luke Welden on KB2919355 The update is not applicable to your computer
  • LM on Installing standalone Remote Desktop Gateway on the Windows Server 2012 R2 without complete Remote Desktop Services infrastructure
  • Anonymous987 on KB2919355 The update is not applicable to your computer
  • ANonyommus987 on KB2919355 The update is not applicable to your computer
  • Alan on Remote Desktop Services Manager 2016
  • Jagz on Installing Remote Desktop Services 2016
  • VG on SharePoint audit logs
  • VG on SharePoint audit logs
  • Kalle on SharePoint audit logs
  • 3 pandas on SQL Server security best practices
  • Kalle on SharePoint audit logs
  • Frane Borozan on Installing standalone Remote Desktop Gateway on the Windows Server 2012 R2 without complete Remote Desktop Services infrastructure
  • Erin Platt on Installing standalone Remote Desktop Gateway on the Windows Server 2012 R2 without complete Remote Desktop Services infrastructure
  • Tad Benoit on Remote Desktop Services Manager 2016
  • Dean Hufford on Installing standalone Remote Desktop Gateway on the Windows Server 2012 R2 without complete Remote Desktop Services infrastructure

Copyright © 2023 Frane Borozan. All rights reserved