Thursday, April 26, 2012

SharePoint performance tuning

There are various factors which comes in to scene when we enter the performance tuning for SharePoint, lets see the major players

HTTP Compression
  • It provides on the fly compression on files when served from the web server to the browser. 
  • It can be configured on file type extension(htm,js,css etc).
  • This setting applies on web application level and in disabled state by default.
  • Compression puts pressure on Server's processor but gives an instant boost to the application
  • HTTP sniffing tools like Microsoft Fiddler or HTTP Watch can be used to verify the traffic.
Browser Caching
  • Modern browsers come with private caching ability up to 1 GB.
  • It can improve performance for sites which contain more static pages, can be tweaked in IIS HTTP response headers(cache-control: max-age=3600, post-check”)
  • Easy to configure and implement 
BLOB Caching
  • BLOB Caching stores all of its content on disk , it is also configured based on the file types
  • Configurable in web.config the file types, max size(10 GB default) and enable/disable switch.
  • It works at the web application level, this option is disabled by default.
 Object Caching
  • Object caching caches site navigation structure, published pages and resources, draft pages etc.
  • It is enabled by default at site collection level, the Farm admin might see it a bit daunting task to manage across all site collections :(.
  • It also stores cached objects on disk and shares the space with BLOB cache.
  • Need to be bit careful before increasing or decreasing the allocation of this Cache control, any unplanned configuration can deteriorate the existing performance
Browser Connections
  • Internet Explorer 7 and earlier versions limit the number of concurrent file download as two at a time. IE 8 relaxed this limitation to six.
  • When you work on faster connections, this browser setting might be a bottleneck for users in seamless performance.
  • Microsoft provides a fix for this limitation
  • This restriction was imposed by IETF RFC 2068 Page 45 and the explanation goes like this
 "Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD maintain AT MOST 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion of the Internet or other networks."
Other options
  • Now a days Proxy servers & Load balancers are supporting static content caching, verify the feasibility on this.
  • ISAPI filter from Aptimize can reduce significant performance bottlenecks.