After deploying a SharePoint application, what maintenance actions can be done to ensure optimal performance and avoid degradation of performance over time?

I can think of the following:

  • Schedule disk defragmentation
  • Set Scheduled virus scans for the system (need to eliminate some paths to not affect SP performance: more about it here )
  • Clean up old unused log files.

What else can be done?

2 Answers 2


There's a couple of things I'd add to that:

  • Database maintenance - best practice is to set up a SQL maintenance plan to do a DBCC CHECKDB, reorganize indexes etc. The authorative info is in the Database Maintenance whitepaper by Bill Baer
  • On a similar note, make sure your DB backup strategy is appropriate to ensure transaction logs get truncated
  • On a more day-to-day basis, ensure your app pool recycling is configured appropriately. It's common to schedule a recycle overnight, but be sure to run warm-up scripts immediately afterwards, and not to recycle multiple servers at the same time
  • Can you please elaborate on "make sure your DB backup strategy is appropriate to ensure transaction logs get truncated" ? what do I need to do exactly? Jan 11, 2010 at 13:23
  • Since SharePoint databases are set to use the 'Full Recovery' model, essentially you just need a strategy for backing up your transaction logs. This should cause the logs to shrink. Beware that another option, using DBCC SHRINKFILE or similar to explicitly reduce the file sizes can take a lot of time on large SharePoint farms, so aren't typically recommended. Jan 11, 2010 at 14:28
  • 1
    I can recommend Kimberly Tripp's article on DB mantenance tinyurl.com/yk69xao tinyurl.com/yf5jooe (and other articles regarding maintenance on that blog). ALso remember that timerjob leaks (still) and requires restarting once in a while Jan 11, 2010 at 23:16

Ensure you have an idea of the base performance of your system so create some performance monitoring logs and run them for a week so that you can form a baseline.

Suggest that you record CPU, Memory, Logical Disk and Network counters as a minimum.

Repeat the logging every month or so and then at least you can make monitor perfomance allowing you to make informed decisions on upgrades (with proof to management) and provide metrics if users complain about performance.

Also always move the IIS logs and SharePoint ULS log from their default location and onto a separate partition so that they dont get in the way or steal space from the base OS. On a number of occasions I have experienced SharePoint environments that have crashed or have performance issues due to lack of disk space on the c: drive.

Check that your SharePoint diagnostic logging is not set too verbose, when an issue occurs by all means switch the diagnostic logging to be more 'chatty' but once you have fixed the problem switch the diagnostic logging back.


Regards Simon

  • thats sane advice! Get my vote :-) Jan 11, 2010 at 23:17
  • what is the best way to "record CPU, Memory, Logical Disk and Network counters" ? or do you mean manually recording it? Jan 12, 2010 at 11:12
  • On each of the WFE and DB server create performance monitoring log files using Control Panel -> Administration Tools->Reliability and Performance Monitoring (Windows 2008). You can then create a User Defined Data Collector Set and then create a new data collector choose Performance Counters type. For the the performance counters click add, select the appropriate objects, take all the objects within CPU, Memory, Network & Logical Disk objects. I use 30 seconds for sample interval. You can setup a schedule to define logging period.
    – Anonymous
    Jan 12, 2010 at 11:21
  • On another point if you have System Centre this can handle it all for you and also put the data into a warehouse for analysis over a period of time.. very useful for capacity management.
    – Anonymous
    Jan 12, 2010 at 11:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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