IT:AD:Non-Functional Requirements:UX:Web Server
Requirements
WebServer (IIS) Optimisations
- [NFR:8syqh:SHOULD] Run Windows Server 2008 (R2) on new hardware:
Rational: the Windows Server 2008 bits are optimized to take advantage of the features of new CPU architectures.
- I didn't find an article that explicitly discusses this, but we ran into this issue however when Windows Server 2008 was in Beta.
- You probably will see that Windows Server 2008 doesn't perform well on old hardware, compared to Windows Server 2003, which was the OS of that timeā¦</WRAP>
- [NFR:8syqh:SHOULD] Put the most appropriate Default Document Type at the type of the Default Document Type List
Rational: execution speed can be improved by stripping the list of default documents or putting the the most commonly requested type at the top of the list.
The list of IIS default documents increased over the years (iisstart.htm, default.htm, default.asp, index.htm, index.php etc.). Problem is that IIS has to go through the list of default documents and look in the file system until it finds one that actually exists. You can increase the execution speed by stripping the list of default documents or putting the one you are using on top of the list.
- [NFR:8syrp:SHOULD] Review IIS's idle timeout and proactive recycling settings.
Rational: by default, IIS recycles Application Pools proactively every 29 hours. It also times out Application Pools when the site is inactive.
- A proactive recycle might be initiated right when you have the most traffic on your site and an idle timeout might happen just because you removed your server from the web farm for a few minutes.
- Consider turning off idle timeout and finding an alternative recycling solution for your application.</WRAP>
- [NFR:8syro:SHOULD] ASP.NET: for high throughput sites, review the Thread Pool
maxConcurrentRequestsPerCPUsetting.Rational: the
maxConcurrentRequestsPerCPUsetting's default value is 12, which means that no more than 12 concurrent requests per CPU will be executed.- Usually this setting works well, unless you require very high throughput.
- For more information:
- Thomas has a great post on thread settings in IIS7.
</WRAP>
- [NFR:8syqh:SHOULD] Turn off like Request Tracing until needed.
Rational:turn off features that can slow down execution.
Request and ETW Tracing is pretty lean and invaluable for troubleshooting problems. But if you are under a lot of load you should probably turn these features off.
- [NFR:8syrq:SHOULD] When deploying an ASP.NET application, Use
ASPNET_COMPILERto optimize for the first impression- Rational: ASP.NET applications can take a long time to start up. Due to human nature the first impression counts however.
ASPNET_COMPILERdoes a batch compile of all ASP.NET files and resources.- This speeds up startup, especially on slow disks!
- That's why the Web Platform Installer runs
ASPNET_COMPILERat the end of an install of an ASP.NET application. - More about
ASPNET_COMPILERhere.aspx).