Day 3 - Building High Scale, High Availability Websites in SharePoint 2010 

Need to decide what is "High" – sometimes need to trade between scale and availability – is sometimes a judgement call

Speed of response is critical to website success – Amazon found that a 100ms increase in page response time led to a 1% drop in sales

Toolkit

Browser Test Tools

  • Fiddler
  • IE Developer Toolbar
  • YSlow

Load Test Tools

  • TinyGet
  • Visual Studio Test Edition
  • HP LoadRunner (aka Mercury)

External Tools

  • SaaS load testers (eg Keynote)

What Impacts Performance ?

The Workload on the servers

Reducing the Workload on the Servers

  • Follow best practice for scalability of SharePoint Farms
  • Switch off unused services in SharePoint and Windows
  • Separate Authoring Farm from Production Farm
  • Set Content Databases on production to be Read-Only
  • Use SQL Mirroring to synchronise between the Author and Production Farm (MSS 2010 feature)
  • Can switch off services very easily on MSS 2010
  • Dont mix secure and insecure content
    • Caching efficiencies
  • Apply standard .NET best practices
    • Exception handling
    • Defensively code your applications
    • Do not catch exceptions you cannot handle
    • Fail Early
    • Clean up in Finaly {} blocks
    • Understand how .NET manages objects
  • Managed Code best practises
    • Be careful of what is going on under the hood
    • List.items.count will hydrate every item in the list - use SPLIST.ItemCount
    • Properly dispose of objects
    • Aggregation / Rollup
    • Use out of the box controls
    • Use SPLinq
      • Less efficient but safer
    • Never iterate through collections of strongly typed objects
  • Deployment techniques
    • Deploy via Features and Solutions
    • Keep Files uncustomized (safe mode parser is very expensive)
  • Output caching – use anonymous profile
  • BLOB caching
  • Offload work to other servers
    • SSL - Resource intensive Can be dealt with by the firewall or dedicated hardware
  • Use 2010 Custom Service Apps
    • Allows you to Offload expensive workloads to other servers
  • In MSS 2010 use the developer dashboard – tells you where time is being spent loading the page
  • For SQL: scale UP to 8 procs, scale OUT after 8 procs
    • Don't skimp on DB Server memory. Recommend 8G small, 16G medium, 32G large
  • In MSS 2010 use resource throttling

Reducing the page payload

  • Minimise Viewstate – must be as small as possible
  • Use Valid XHTML – no INLINE STYLE
  • Lazy Load JavaScript Files - remove them on the production farm f possible
  • Use IIS Compression
  • Payload could be 50% Images
  • In web.config -> compilation -> debug =false could save up to 20% of payload.

Reducing the number of requests

  • Consolidate files together during the build
    • Minimize the number of js and css files you are deploying – either manually or in MSBuild scripts
  • Use content delivery methods
    • Use css sprites – something that allows you consolidate into one image many images and use css to display the correct image - Use the Aptimize product to do this
  • Use Content Delivery Networks (CDNs) – if site needs to go worldwide
    • Content Delivery Networks cache content around the world
    • Eg Host streaming media – Smooth HD from Microsoft and Akamai
    • Host standard frameworks – JQuery and AJAX
    • Host Complete Sites - uses Akamai or similar

High Availability

Farm topology

  • Apply general availability best practise
  • Move other services off your web front end servers
  • Consider the usage profile

2010 improvements

  • Sandboxed solutions
    • Allow system admin control over resourecs used by custom code
    • Small performance hit for running in a separate thread
  • Health Analyser and server monitoring – catch issues earlier
  • Patch Management

 

 

 

 

 

 

 

 
Posted on 22-Oct-2009 15:53 by Nigel Price
0 Comments
Categories: MOSS2007, MSS 2010, SharePoint Conference 2009
 

Comments

Add New Comments

Name:
Email:
Comments: