T06 Microsoft Internet Information Services 7 (IIS7) Diagnostics for

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.