iis7: a brief tour diagnostics drilldown best practices and patterns
TRANSCRIPT
Microsoft Internet Information Services 7 (IIS7) Diagnostics for Developers
Mai-Lan Tomsen BukovecGroup Program Manager, IISMicrosoft Corporation
Agenda
IIS7: A brief tourDiagnostics drilldownBest practices and patterns
5 Reasons To Love IIS7
1. Opt-in modular architecture with new extensibility model
2. Reliable, high performance PHP hosting alongside ASP.NET hosting
3. Easy-to-use XML-based configuration system
4. Powerful secure remote, delegated administration
5. Diagnostic tools for troubleshooting
IIS7 Modularity
Security
AnonymousAuthentication
BasicAuthentication
DigestAuthentication
WindowsAuthentication
UrlAuthorization
CertificateMappingADCertificateMappi
ngRequestFiltering
IPRestriction
Application Development
.NET Extensibility
ISAPIFilter
ISAPIExtension
CGI
FastCGI
ServerSideIncludes
ASP
ASP.Net
Health and Diagnostics
HttpLogging
CustomLogging
RequestMonitor
HttpTracing
ODBCLogging
LoggingLibraries
PublishingFTPServer
FTP Management
WebDavModule
PerformanceStaticCompression
DynamicCompression
Management
Management Console
Management Scripting
Mgmt Service (WMSVC)
IIS6 Config (Metabase)
IIS6 WMI Provider
IIS6ScriptingIIS6 Management
Snap-in
Core HTTP Server ComponentsDirBrowsing
Process Model (Windows Process Activation Service) ProcessModel
Authentication
...
ExecuteHandler
...
SendResponse
HTTP Request
HTTP Response
Authorization
UpdateCache
ResolveCache
IIS Extensibility
Authentication
...
DetermineHandler
...
SendResponse
HTTP Request
HTTP Response
BasicNTLM Anon
CGI
Static File
ISAPI
Log Compression
Componentized server
Pluggable modular functionalitySmall generic request pipeline
EnablesLightweight serversCustom / specialized servers
Integrated modeASP.NET membership, forms authentication, and Login controls
UrlAuthz
OutputCache
Forwarder
Basic40+
PHP Support
Windows Server hosting for PHP or any other FastCGI-compliance framework along with ASP.NETBuilt-in FastCGI optimized for high performance and reliability for non-thread safe PHP proceses
Reuses CGI processes for multiple requests25x 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 engineHost Multiple Versions of PHP Side by Side
Easily host PHP4 and PHP5 on the same server
Configuration System
Powerful, XML-file based ManagementEasily copy configuration from server to serverUse environment variables to abstract physical paths
Enable Farms of Stateless Front-End Web Servers
Share IIS configuration on central UNC shareQuickly XCopy deploy appsDistributed Web.config files (IIS and ASP.NET config) live with contentCan be local or remote UNC path
Separate, scoped config file for each AppPool built-in
Process isolation for each new site by default
Remote Admin and Delegation
New .NET API: Microsoft.Web.Administration
Remoteable through COM interfacePowerShell support
Delegate Management to Site OwnersManage with Remote Administration Tool
Supports Vista, Windows 2003, XP
Secure, firewall-friendly connection over HTTP/SSL
Authenticates both Windows and non-Windows credentials
IIS7: A Brief Tour
demo
Modularity | Configuration | PHP Hosting | Xcopy Deployment for an ASP.NET application
Diagnostics in IIS7
ETW Tracing
Failed Request Tracing
Detailed Errors
IIS7 ManagerAppCmd Command-
Line utility
Event Monitor
Performance Counters
ASP.NET Trace
integration
Process Orphaning
Tools
Platform
Browser
RSCA
Logs
Diagnostic Tools By Dev Lifecycle
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
Advice From IIS Customer Support
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, RSCADo isolate the problem.
FREB, detailed errors, trace events
Top 3 Diagnostic Tools in IIS
1. Detailed error messages2. Failed Request Tracing3. Tracing integration
Detailed Errors
Uniquely identify most IIS 7.0 web server and module error conditions
Unique response status / sub-status codesLogged 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 securityBy default, detailed errors sent only to localhostCan configure to send to all clientsCan configure custom errors from file, URL, or redirect
ASP.NET custom errors override IIS custom errors
Detailed Errors We See Often In DevelopmentError 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. ORYou are requesting a static file which is not registered as a static file.
Install the corresponding framework to resolve this.ORAdd 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.OREnable other authentication methods that your client supports.
Detailed Errors
Mai-lan Tomsen BukovecGroup Program ManagerMicrosoft
demo
Failed Request Tracing
Enable no-repro instrumentation for failed requestsAllow for custom failure definitions per URL
Time taken, status/substatus codes
Enable per-URL trace configurationAllow me to define what to trace per URL
Persist failure log files beyond process lifetimeCommon scenarios:
Request takes too long/hangs -> very common todayRequest error -> request completes, but with error status code
Authentication/Authorization problemsServer 500 errors
Failed Request Tracing
Mai-lan Tomsen BukovecGroup Program ManagerMicrosoft
demo
Application-Specific Diagnostics
ASP.NET page traces for integration into Failed Request Trace loggingSystem.Diagnostics.Trace
Capture tracing information from .NET componentsConfigure trace sources to control specific application tracing information
ASP.NET Health Monitoring eventsCorrelate and analyze application tracing information in the context of the overall request
Application-Specific TracingMai-lan Tomsen BukovecGroup Program ManagerMicrosoft
demo
Additional Diagnostic Tools
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 loggingRSCA 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
While developing….
Use request log files to find error patterns and offending URLSConsider using process orphaningUse ASP.NET health monitoring to receive configurable alerts about errorsUse WCAT to stress application before productUse design patterns in the Performance Tuning whitepaper (add link)
While tuning….
Enable Output Caching for semi-dynamic pagesSet IIS worker processes in Wow64 mode in per-AppPool settingsIf 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
While troubleshooting….
Use Failed Request Tracing to capture hard-to-repro errors Set fine-grained Failed Request Tracing rules to keep your log history validDon’t use IISReset, recycle apppoolsCheck key performance counters for clues on application health
Example: GC-related performance counters
New IIS7 ExtensionsWeb-based release channel
Free for download, www.iis.netAgile 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 adminFully serviced and supported on Windows Server 2008
IIS.NETHome 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
SummaryNew IIS7 platform
Modular architectureFirst class PHP supportXML based configurationRemote mgmtDiagnostic 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: [email protected]
© 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.