IIS7: A brief tour Diagnostics drilldown Best practices and patterns 1. 2. 3. 4. 5. Opt-in modular architecture with new extensibility model Reliable, high performance PHP hosting alongside ASP.NET hosting Easy-to-use XML-based configuration system Powerful secure remote, delegated administration Diagnostic tools for troubleshooting Publishing Application Development Security Health and Diagnostics FTPServer FTP Management WebDavModule AnonymousAuthentication BasicAuthentication DigestAuthentication .NET Extensibility HttpLogging Performance ISAPIExtension CustomLogging StaticCompression CGI RequestMonitor DynamicCompression ISAPIFilter WindowsAuthentication UrlAuthorization CertificateMapping FastCGI ADCertificateMapping ServerSideIncludes RequestFiltering ASP IPRestriction ASP.Net HttpTracing ODBCLogging Management LoggingLibraries Management Console Management Scripting Core HTTP Server Components DirBrowsing HttpRedirect DefaultDoc Mgmt Service (WMSVC) CustomErrors StaticFile IIS6 Config (Metabase) IIS6 WMI Provider Process Model (Windows Process Activation Service) ProcessModel .Net Environment Configuration API IIS6Scripting IIS6 Management Snap-in Componentized server HTTP Request HTTP Response Basic 40+ HTTP Request HTTP Response Authentication ... Authentication NTLM Basic Authorization Anon ResolveCache ... Url Authz Output Cache CGI Static ExecuteHandler File ... ISAPI UpdateCache Compre SendResponse Log ssion Forward er Determine Handler ... SendResponse Pluggable modular functionality Small generic request pipeline Enables Lightweight servers Custom / specialized servers Integrated mode ASP.NET membership, forms authentication, and Login controls Windows Server hosting for PHP or any other FastCGIcompliance framework along with ASP.NET Built-in FastCGI optimized for high performance and reliability for non-thread safe PHP proceses Reuses CGI processes for multiple requests 25x faster than standard CGI Fully tested against latest PHP.NET builds (PHP 5.2.1) Plugs into IIS diagnostics before the requests enters and once the request leaves the PHP engine Host Multiple Versions of PHP Side by Side Easily host PHP4 and PHP5 on the same server Powerful, XML-file based Management Easily copy configuration from server to server Use environment variables to abstract physical paths Enable Farms of Stateless Front-End Web Servers Share IIS configuration on central UNC share Quickly XCopy deploy apps Distributed Web.config files (IIS and ASP.NET config) live with content Can be local or remote UNC path Separate, scoped config file for each AppPool built-in Process isolation for each new site by default New .NET API: Microsoft.Web.Administration Remoteable through COM interface PowerShell support Delegate Management to Site Owners Manage with Remote Administration Tool Supports Vista, Windows 2003, XP Secure, firewall-friendly connection over HTTP/SSL Authenticates both Windows and non-Windows credentials Modularity | Configuration | PHP Hosting | Xcopy Deployment for an ASP.NET application Tools Event Monitor Browser IIS7 Manager AppCmd Command-Line utility Logs Platform Detailed Errors Failed Request Tracing ETW Tracing Performance Counters ASP.NET Trace integration Process Orphaning RSCA Development • Detailed errors • Failed request tracing • ASP.NET integrated tracing Functional testing • Detailed errors • Failed request tracing • Performance monitors • Web Capacity Analysis Tool (WCAT) for stress testing • Orphan failed processes for debugging Production Bug Fixing • Runtime State and Controls API (RSCA) • Event Tracing for Windows (ETW) tracing • Failed request tracing • Performance counters • DebugDiag • Orphan failed processes for debugging Don’t assume something is happening. Do get facts. Performance counters, event counters, FREB logs, RSCA Don’t go down the “switch this setting and see”. Do find the root cause, and then resolve the problem there. FREB, detailed errors, RSCA Do isolate the problem. FREB, detailed errors, trace events 1. 2. 3. Detailed error messages Failed Request Tracing Tracing integration Uniquely identify most IIS 7.0 web server and module error conditions Unique response status / sub-status codes Logged in site logs and shown in detailed error Provide rich information to understand and resolve the error Module, pipeline stage, win32 error code, etc. Lists possible causes, and things you can try Provides error message security By default, detailed errors sent only to localhost Can configure to send to all clients Can configure custom errors from file, URL, or redirect ASP.NET custom errors override IIS custom errors Error Cause Resolution 500.19 Wrong configuration section syntax (elements, attributes, attribute value type) Config File shows the file and line of the error in configuration file. 404.3 You are requesting a script that doesn’t have the associated application framework installed. OR You are requesting a static file which is not registered as a static file. Install the corresponding framework to resolve this. OR Add the extension to the MIME Types in IIS Manager 404.1 This error occurs whenever no suitable authentication method is configured (your site does not enable any authentication methods or the browser does not support the authentication methods you have configured). For anonymous web sites, enable anonymous authentication. OR Enable other authentication methods that your client supports. Enable no-repro instrumentation for failed requests Allow for custom failure definitions per URL Time taken, status/substatus codes Enable per-URL trace configuration Allow me to define what to trace per URL Persist failure log files beyond process lifetime Common scenarios: Request takes too long/hangs -> very common today Request error -> request completes, but with error status code Authentication/Authorization problems Server 500 errors ASP.NET page traces for integration into Failed Request Trace logging System.Diagnostics.Trace Capture tracing information from .NET components Configure trace sources to control specific application tracing information ASP.NET Health Monitoring events Correlate and analyze application tracing information in the context of the overall request Process orphaning for failed applications through Advanced Settings on app pools (or orphanActionExe in config) Rapid Fail Protection (RFP) occurs when app pool fails X times in Y minutes (configurable) ETW tracing for Windows for extensive logging RSCA lets you view requests that are in-flight DebugDiag for performance related issues including high and low CPU Hangs (slow response), process termination, memory leaks Use request log files to find error patterns and offending URLS Consider using process orphaning Use ASP.NET health monitoring to receive configurable alerts about errors Use WCAT to stress application before product Use design patterns in the Performance Tuning whitepaper (add link) Enable Output Caching for semi-dynamic pages Set IIS worker processes in Wow64 mode in perAppPool settings If you * script-mapped all requests to ASP.NET in IIS6, Integrated Pipeline is much faster than an IIS6 * scriptmap solution. Try together with IIS7 URL Authorization. Put your high traffic document on top of the Default Documents list. Static default documents are cached in kernel-mode Use Failed Request Tracing to capture hard-to-repro errors Set fine-grained Failed Request Tracing rules to keep your log history valid Don’t use IISReset, recycle apppools Check key performance counters for clues on application health Example: GC-related performance counters Web-based release channel Free for download, www.iis.net Agile release model Q1 2008: Secure FTP server, WebDav, Remote Manager for IIS7, Media Pack (Bit Rate Throttling) Built using the new IIS7 extensibility platform After setup, fully integrated into IIS admin Fully serviced and supported on Windows Server 2008 Home for the IIS Technical Community! In-depth technical articles and samples Connect with other IIS experts on blogs & forums Free advice and assistance in forums Download center with IIS extensions New IIS7 platform Modular architecture First class PHP support XML based configuration Remote mgmt Diagnostic toolset Diagnostic tools suited to initial development or troubleshooting Wide set of tools for troubleshooting and diagnostics. Narrow down root cause with Detailed Errors and Failed Request Tracing Any questions or comments? Contact: mailant@microsoft.com © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.