Internet Information Services (IIS, which was formerly known as Internet Information Server) is a flexible, general-purpose web server originally created by Microsoft for its Windows NT family of network operating systems. IIS supports a number of web protocols, including HTTP, HTTPS, FTP, FTPS, SMTP and NNTP.
IIS is used on Windows systems to provide web functionality, by serving requested HTML pages or files. And like any web platform, there are certain parameters and conditions which may be monitored to help optimize its performance, and ensure its availability and security. We’ll be considering the important ones to watch, in this article.
IIS Basics
A Windows-based web server that’s fitted with IIS accepts requests from remote client computers and gives the appropriate response, enabling the sharing and delivery of information across LANs or local area networks (e.g. corporate intranets) and WANs (wide area networks, like the internet). This information may be delivered in various forms: HTML coded webpages, text documents, graphics files, uploads, downloads, file exchanges, etc.
Internet Information Services uses the body of standard internet protocols and languages to deliver different forms of content. So Hypertext Markup Language (HTML) is used in the creation of text, webpage buttons, image placeholders, hyperlinks, and direct interactions or page behaviors. Exchanges of data between web servers and users take place via the Hypertext Transfer Protocol (HTTP). Encryption of data in transit is performed using Transport Layer Security (TLS) or Secure Sockets Layer (SSL). File Transfer Protocol (FTP) and its secure version FTPS are (logically enough) used to transfer files. And so on.
Internet Information Services operates with the Active Server Page or ASP.NET Core framework, a server-side script engine which produces interactive webpages such as blog platforms or content management systems. The ASP.NET Core application acts as a mediator between requests sent to the web server and the processed response sent back to the client.
Evolution of IIS
IIS 1.0 was developed for Windows NT 3.51 back in the day, and saw a number of iterations until IIS 6.0 was added to Microsoft’s Windows Server 2003. Windows Server 2008 saw a major redesign of Internet Information Services in the form of IIS 7.0. The latest version – IIS 10 – was built for Windows Server 2016 and Windows 10.
IIS 10 works in a container and virtual machine, enabling a wide range of web applications to be catered for, and adds support for the HTTP/2 protocol. There’s now a self-contained version of the platform known as IIS Express, which removes the need for administrative privileges to conduct many of its tasks, and is aimed at enabling developers to more easily test websites.
Basic Performance Indicators
A baseline for IIS performance should be maintained, to ensure that a minimal level of functionality (representing “standard operating conditions”) can be preserved at all times. This will enable the enterprise to meet all its responsibilities in terms of making services available, processing requests, and preserving data integrity.
Indicators to look out for at this level include the following:
· Website Monitoring Using Simple HTTP Testing: By setting a simple HTTP test to run every minute, you can keep an eye on whether your website is up or down, at any given moment. This check can also enable you to track how long the site takes to respond to requests and interactions.
· Making Sure The IIS Application Pool Is Running: Set your monitoring tools to verify that the IIS Application Pool has started, and is running as the file w3wp.exe. This will help guard against fatal application errors, bad system configurations, user errors, and other issues.
· Overall Server & CPU Usage: This is a baseline indicator for any system, really. For Internet Information Services, you should monitor the CPU and server usage of the IIS Worker Process, in particular.
· Memory Usage & Allocations: Again, a basic consideration for any software platform. The currently used and available memory for the IIS Worker Process is the thing to watch, here.
Monitoring IIS Generally
Your monitoring system should be configured to observe these Windows Performance Counters, for Internet Information Services:
· Bytes Received/Second: Useful in tracing and identifying potential spikes in data traffic, for your Web Service.
· Bytes Sent/Second: A Web Service indicator for tracking and identifying potential spikes in network traffic.
· Current Connections On The Web Service: Your observations and experience over time will establish safe, peak, and unacceptable levels for this parameter.
· Requests/Second For ASP.NET Applications: Static files and certain other requests are exclusively processed by IIS. Other requests should be monitored to observe which ones are handled by IIS, and which by ASP.NET – and the rate at which they’re coming in.
· Requests In The ASP.NET Application Queue: Too many of these may hamper your server’s ability to handle incoming requests, so establish a safe maximum and stick to it.
· Time Spent Clearing The Garbage Collection Memory (.NET CLR Memory – % Time in GC): Poor handling of object allocations may result in too much time (more than 5% is considered excessive) being spent by an app on garbage collection.
· Tracking All .NET Exceptions: Having a very high rate of exceptions can cause performance issues which are difficult to observe or trace. The “.NET CLR Exceptions – # of Exceps Thrown” counter enables you to keep track of all .NET exceptions – even if they’ve been handled and discarded.
· Checking The Number Of Unhandled Exceptions: Monitoring the “Errors Unhandled During Execution/sec” counter will keep track of unhandled exceptions which may have impacted system performance or directly affected your users.
· Errors Total/Second For ASP.NET Applications: Establishing the number of errors during compilations, pre-processing and execution may reveal certain types of errors which other exception counters aren’t able to detect.
Some Best Practices
If your system monitoring tools allow for the automation of processes, it’s a good idea to use this feature to automatically monitor all baseline processes, and to automatically detect all ASP.NET applications.