Showing posts with label SharePoint 2010 performance. Show all posts
Showing posts with label SharePoint 2010 performance. Show all posts

Thursday, October 4, 2012

Tips utilizing IIS 7 compression to improve SharePoint 2010 performance

Internet Information Services (IIS) that can substantially impact your overall SharePoint 2010 performance—particularly for those with slow network connections. IIS supports compression of thecontent before it’s returned to the client. This process provides efficient use of bandwidth resources at the expense of some CPU time. The settings in IIS7—required by SharePoint 2010—allow you to not only control the amount of compression but you can have IIS automatically disable compression when the CPU utilization of the server is too high.
Compression is enabled based on two dimensions.

The first dimension is the MIME type of the file that’s being returned. This allows you to have different settings for text documents, as compared with .jpg, .gif, .cab, and .zip documents from text, HTML, and XML documents. Attempting to compress .jpg, .gif, .cab, and .zip will not yield much (if any) improvement in size, because they are already compressed. On the other hand, text including HTML and XML is generally highly compressible, so even a small amount of effort to try to compress them can sometimes yield impressive results. 

The second dimension is whether the output is a static file or whether the content was generated dynamically, which is the case for much of SharePoint. Static compression is less expensive, and therefore can be done more aggressively. The files are compressed once and then stored in their compressed state to be served the next time the file is requested. This makes the CPU load for compressing static files trivial for most applications. Dynamic pages, however, need to be compressed on every single output and can therefore put a larger load on the CPUs. As a result, a setting more in the neighborhood of four is appropriate for dynamic content.
You can also instruct IIS to cache dynamic content after compression if you believe that this will help improve performance. If you’re using page output caching, this may be a useful way to minimize the impact of compression on CPU utilization. This does slow down initial response time, so it’s advisable only when you expect the cache to be reused. 


You should review IIS 7 compression and performance impact from various compression levels and to see how much adjusting is needed to finely tune a Windows web server. You should understand the IIS 7 compression default values before you change them.


While you could set up the IIS compression from IIS UI, it would be convenient to automate the configuration through script. Joel Plaut has a good summary to set up compression and I have incorporate some suggestion from Microsoft best practice. Here is the modified script named SetIISCompression.cmd and you could adjust it for your environment.

REM appcmd command is located in C:\Windows\System32\Inetsrv
 C:
 cd C:\Windows\System32\Inetsrv
appcmd list config -section:httpcompression

REM Enable Static and Dynamic compressions
appcmd set config /section:urlCompression /doStaticCompression:True
appcmd set config /section:urlCompression /doDynamicCompression:True

REM Set static compression to 9 and dynamic compression to 4 as Microsoft recommended
appcmd set config -section:httpCompression -[name='gzip'].staticCompressionLevel:9 -[name='gzip'].dynamicCompressionLevel:4

REM Disable static compression when CPU 80% - default is 100%
appCmd set config -section:httpCompression /staticCompressionDisableCpuUsage:80
appCmd set config -section:httpCompression /staticCompressionEnableCpuUsage:50

REM Disable dynamic compression when CPU 80% - default is 90%
appCmd set config -section:httpCompression /dynamicCompressionDisableCpuUsage:80
appCmd set config -section:httpCompression /dynamicCompressionEnableCpuUsage:50

REM Set minimal file size for compression to 512 KB – default is 256 KB
appCmd set config -section:httpCompression /MinFileSizeForComp:512

REM Set number of megabytes of disk space that compressed files can occupy in the compression directory – default is 100 MB
appCmd set config -section:httpCompression /maxDiskSpaceUsage:200

appcmd list config -section:httpcompression



Wednesday, October 3, 2012

Powershell scripts to optimize SharePoint 2010 BLOB cache setting to improve performance



If you want to automate the BLOB cache web.config file changes, you could refer this blog by using powershell. I’ve modified the powershell script published and applied all the settings discussed in my previous blog that could optimize the BLOB cache. Here are the additional changes applied based on previous discussion.



In addition, I’ve also ass another script to enable the cache on all webapps on the server to automate the process.
 
We are in the process to future improve the script so it could be run on one server but will execute on all WFE servers.