What is Microsoft IIS?
Microsoft created an internet information services (IIS) that is extensible web server software that runs on Windows operating systems and is used to exchange static and dynamic web content with internet users.IIS natively supports the Microsoft.NET framework and libraries, enabling developers to quickly build, deploy, and manage ASP.NET web applications on IIS.
IIS has many features such as:
- Swappable interfaces such as ISAPI and FastCGI that enables IIS to work with variety of backend technologies and windows technologies.
- Support the HTTP/2 protocol, to offer more efficient resource use and lower latency.
- Works on the minimal server deployment model Nano Server that provides higher density, increased uptime, and a smaller attack surface making it suitable for running web workloads.
- Works in a container and virtual machine, so developers and administrators have more flexibility in deployment choices.
Microsoft IIS Architecture?
IIS has three main parts:
- http.sys
Is the kernel part of IIS.Http.sys listens for HTTP and HTTPS requests and validates each one before passing it to a worker process.
- worker processes
The main tasks of a web server are handled by W3WP (WWW Worker Process) including receiving client requests and serving responses.
- IIS admin service
The primary component here is the World Wide Web Publishing service (WWW Service) that is running as a process called svchost.exe.
What's the Application Pool?
- IIS uses application pools, which are groups of worker processes with shared settings, to ensure reliability and manageability.
- Application pools isolate Web applications by sharing worker processes, separating each process, and ensuring that application problems in one pool do not affect other pools.
Improving high performance of Microsoft IIS
To ensure high performance of Microsoft IIS based web applications must track these 10 monitoring metrics:
- Monitor IIS availability and response time.
- It is recommended to use Synthetic monitoring for IIS server performance, which involves simulating protocols and comparing response times with baseline to ensure service uptime and response quality.
- Monitor the workload on your IIS server and induvial websites.
- Comparing request rates across IIS servers in a server farm helps balance workload, preventing performance bottlenecks.
- Get specific details on website performance.
- Analyze the IIS server’s access log in real time to identify the cause if error responses from each website, URL errors and logon failures.
- Snapshot requests currently executing for each website and identify requests that are being processed slowly
- The number of requests should be as small as possible. If the number of requests is growing this may result higher latencies and request queueing.
- Look out for ASP.NET exceptions in the Application Event log
- Check application event log for warning events, pointing to application logic causing the exception.
- Monitor .NET Processing Efficiency
- For each .Net application monitor the following:
- Requests in the queue
- Requests executing currently
- Request execution time
- Request waiting time
- Monitor .NET common language runtime (CLR) engine
- The .NET CLR engine’s performance measure is garbag collection time, which can indicate object allocation issues.
8. Monitor application pools and worker processes
- Monitor this metrics:
- Current state of the application pool
- Uptime of each pool
- Number of worker processes running
- Report rate of requests to each pool
9. Monitor windows process activation service (WAS)
- Windows process activation service (WAS) manages application pools, tracking active listener and protocol channels, and responding to WAS messages to assess worker processes’ health.
10. Track http.sys performance
- HTTP.sys handles TCP connections, SSL/TLS SChannel, request validation, and windows authentication of HTTP requests with Kerberos before relaying them to IIS.
To read more about Microsoft IIS visit: introduction to IIS