Find the Best Cosmetic Hospitals

Explore trusted cosmetic hospitals and make a confident choice for your transformation.

โ€œInvest in yourself โ€” your confidence is always worth it.โ€

Explore Cosmetic Hospitals

Start your journey today โ€” compare options in one place.

DOTNET: IIS Performance Checklist


โœ… IIS-Only Performance Optimization Settings (Complete List)


1. Application Pool Settings (IIS Core)

โœ” Start Mode

  • AlwaysRunning
    โ†’ Avoid cold starts.

โœ” Idle Time-out

  • Increase or disable (0) if you want warm apps.
    Default (20 min) causes unexpected pool shutdown.

โœ” Worker Process Settings

  • Maximum Worker Processes
    • Keep 1 (no web garden) for ASP.NET/Core.
    • Web gardens only for stateless apps.
  • Queue Length
    • Increase from default 1000 to 5000โ€“20000 depending on load.
      Prevents 503 (Queue full) errors.

โœ” Recycling Settings

  • Disable Regular Time-Based Recycling
    Stops unnecessary restarts.
  • Enable Overlapped Recycling
    Zero-downtime recycling.
  • Disable application pool recycling at idle
    (set Idle Time-out to 0).

2. Site-Level Performance Settings

โœ” Connection Limits

  • connectionTimeout
  • maxConnections
  • Keep-alive enabled.

โœ” HTTP/2 & HTTP/3

  • Enable HTTP/2 (and HTTP/3 on Windows Server 2022+) for higher throughput.

โœ” Compression

(IIS โ†’ Compression feature)

  • Enable Static Compression
  • Enable Dynamic Compression
  • Ensure compression for:
    • text/html
    • text/css
    • application/javascript
    • application/json

โœ” Caching (Output Caching / Kernel Caching)

(IIS โ†’ Output Caching)

  • Enable Kernel Caching (huge perf win for static files)
  • Enable Output Caching for dynamic pages (if safe)
  • Configure:
    • Cache duration
    • Vary-by rules

3. Static File Handling Settings

โœ” Static Content

  • Enable staticContent module
  • Set cache-control headers (long max-age)
  • Enable ETags or Last-Modified
  • Make sure static file module is above ASP.NET modules.

4. IIS Modules Management (Pipeline)

โœ” Disable/Remove Unused Modules

Huge performance improvement because every module executes per request.

Disable modules like:

  • WebDAV
  • ASP
  • PHP (if not used)
  • CGI
  • ISAPI Filters
  • Session State
  • Windows Authentication (if not needed)
  • Request Filtering (if handled by reverse proxy)

Goal: Lightest possible request pipeline.


5. Request Filtering (Limits)

โœ” Max Request Size

  • Tune maxAllowedContentLength
  • Tune maxRequestLength

โœ” URL Length Limits

  • Prevent long-URL attacks.

โœ” Header Limits

  • Tune header size limits.

All these reduce bad requests hitting Kestrel or app layer.


6. Logging Settings

โœ” W3C Logging

  • Disable unnecessary fields
  • Keep logs on separate fast disk
  • Avoid logging ALL headers (expensive)

โœ” Failed Request Tracing (FREB)

  • Only enable for targeted diagnostics
  • Turn off afterward

7. Application Initialization (Warm-Up)

(IIS โ†’ Configuration Editor โ†’ system.webServer/applicationInitialization)

  • DoAppInitAfterRestart = True
  • PreloadEnabled = True

This ensures app is warm and ready before first user hit.


8. Dynamic IP Restrictions (DoS protection)

Not directly performance but prevents IIS from being overwhelmed.

  • Enable Dynamic Deny based on:
    • Request rate
    • Concurrent requests
    • Bad requests

9. WebSockets / Long-Running Connections Settings

  • Enable only if needed.
  • Disable WebSockets for performance if app does not use them.

10. Client Keep-Alive Settings

  • Keep-alive enabled
  • Keep-alive timeout tuned (15โ€“120 seconds depending on use)

11. Centralized Configuration That Impacts Performance

โœ” applicationHost.config

Key performance elements:

  • <system.webServer/serverRuntime uploadReadAheadSize="โ€ฆ">
  • <system.webServer/security/requestFiltering>
  • <system.webServer/httpCompression>
  • <system.webServer/webSocket>
  • <system.webServer/cache>

12. Kernel-Mode Optimizations (HTTP.sys)

(These are still considered IIS-level because IIS sits on top of HTTP.sys)

โœ” Enable Kernel Caching

โ†’ Boosts static file performance massively.

โœ” Set MaxBandwidth & MinFileBytesPrSec

โ†’ Prevents slow clients from consuming server I/O.

โœ” Enable URL ACL Tuning

โ†’ Helps reduce request overhead.


๐ŸŽฏ FINAL OUTPUT

Exact list of IIS settings that impact performance:

App Pool

  • AlwaysRunning
  • Idle Timeout
  • Recycling settings
  • Maximum Worker Processes
  • Queue Length

Compression

  • Static compression
  • Dynamic compression

Caching

  • Kernel caching
  • Output caching
  • Static file caching

Modules

  • Disable unused modules
  • Optimize pipeline

Request filtering

  • maxRequestLength
  • maxAllowedContentLength
  • URL/header limits

Connection settings

  • connectionTimeout
  • maxConnections
  • Keep-alive

HTTP/2 / HTTP/3

  • Enable

Logging

  • Trim fields
  • Optimize log location

Application Initialization

  • PreloadEnabled
  • DoAppInitAfterRestart

Static file handling

  • cache-control headers
  • ETags
  • Last-Modified

Dynamic IP Restrictions

  • Enable rate limiting

HTTP.sys kernel settings

  • uploadReadAheadSize
  • MinFileBytesPerSec
  • MaxBandwidth


Here is the exact location of every IIS performance optimization setting โ€” which GUI blade, which config file, or which PowerShell command you must use.


โœ… 1. Application Pool Settings (All performance-critical)

1.1 Start Mode โ†’ โ€œAlwaysRunningโ€

Where to configure:

  • IIS Manager โ†’ Application Pools
  • Select your App Pool โ†’ Advanced Settings
  • Start Mode = AlwaysRunning

Config file:

applicationHost.config

<applicationPoolDefaults ... startMode="AlwaysRunning" />
Code language: HTML, XML (xml)

1.2 Idle Timeout

Where:

  • IIS Manager โ†’ Application Pools โ†’ Your Pool โ†’ Advanced Settings
  • Idle Time-out (minutes) โ†’ Set to 0 for performance-sensitive apps

Config:

<processModel idleTimeout="00:00:00"/>
Code language: HTML, XML (xml)

1.3 Recycling Settings

Where:

IIS Manager โ†’ Application Pools โ†’ Your Pool โ†’ Recyclingโ€ฆ

Disable:

  • Regular Time Interval
  • Specific Time
  • Memory-based recycling unless required

Config:

<recycling periodicRestart>
    <schedule />
</recycling>
Code language: HTML, XML (xml)

1.4 Queue Length

Where:

IIS Manager โ†’ Application Pools โ†’ Your Pool โ†’ Advanced Settings

  • Queue Length = 5000โ€“20000

Config:

<applicationPoolDefaults queueLength="20000" />
Code language: HTML, XML (xml)

1.5 Maximum Worker Processes

Where:

IIS Manager โ†’ Application Pools โ†’ Your Pool โ†’ Advanced Settings

  • Maximum Worker Processes = 1 (no web garden)

Config:

<processModel maxProcesses="1" />
Code language: HTML, XML (xml)

โœ… 2. Site-Level Settings

2.1 connectionTimeout + Keep-Alive

Where:

IIS Manager โ†’ Sites โ†’ Select Site โ†’ Limitsโ€ฆ

You can configure:

  • Connection timeout
  • Max connections

Config:

<limits connectionTimeout="00:02:00" maxConnections="100000" />
Code language: HTML, XML (xml)

2.2 Enable HTTP/2 / HTTP/3

Where:

  • Windows Features โ†’ HTTP/2 is enabled automatically if:
    • Server 2016+: HTTP/2 TLS
    • Server 2022+: HTTP/3 optional feature

Config:

<system.webServer>
  <httpProtocol allowKeepAlive="true" />
</system.webServer>
Code language: HTML, XML (xml)

โœ… 3. Compression

3.1 Static Compression

3.2 Dynamic Compression

Where:

IIS Manager โ†’ Server or Site โ†’ Compression

  • Enable:
    โœ” Static compression
    โœ” Dynamic compression

Config:

<urlCompression doStaticCompression="true" doDynamicCompression="true" />
Code language: HTML, XML (xml)

โœ… 4. Caching

4.1 Output Caching

Where:

IIS Manager โ†’ Site โ†’ Output Caching

  • Enable Cache
  • Add caching rules

Config:

<caching enabled="true">
    <profiles>
        <add extension=".aspx" policy="CacheUntilChange" duration="3600"/>
    </profiles>
</caching>
Code language: HTML, XML (xml)

4.2 Kernel Caching

Where:

IIS Manager โ†’ Server โ†’ Feature Delegation
Ensure:

  • Output Caching = Read/Write

Config:

<caching enableKernelCache="true" />
Code language: HTML, XML (xml)

โœ… 5. Static File Handling

5.1 Cache-Control headers

Where:

IIS Manager โ†’ Site โ†’ HTTP Response Headers

  • Add โ†’ Cache-Control: public, max-age=31536000

Config:

<httpProtocol>
    <customHeaders>
        <add name="Cache-Control" value="public, max-age=31536000" />
    </customHeaders>
</httpProtocol>
Code language: HTML, XML (xml)

โœ… 6. Modules Optimization (DISABLING unused modules)

Where:

IIS Manager โ†’ Site โ†’ Modules

  • Remove:
    • WebDAV
    • ASP
    • ISAPI Filters
    • CGI
    • Windows Authentication (if unused)

Config:

<modules>
   <remove name="WebDAV" />
   <remove name="ISAPI-filter" />
</modules>
Code language: HTML, XML (xml)

โœ… 7. Request Filtering

7.1 Max Request Body Size

Where:

IIS Manager โ†’ Site โ†’ Request Filtering โ†’ Rules โ†’ Request Limits

  • maxAllowedContentLength
  • maxUrl
  • maxQueryString

Config:

<requestFiltering>
  <requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
Code language: HTML, XML (xml)

โœ… 8. Logging Settings

Where:

IIS Manager โ†’ Site โ†’ Logging

  • Choose fields
  • Directory location
  • Format

Config:

<logFile enabled="true" directory="D:\IISLogs" logExtFileFlags="Date,Time,ClientIP,..." />
Code language: HTML, XML (xml)

โœ… 9. Application Initialization (Warm-Up)

Where:

IIS Manager โ†’ Site โ†’ Configuration Editor
Section:
system.webServer/applicationInitialization

Set:

  • doAppInitAfterRestart = true
  • remapManagedRequestsTo = “true”
  • preloadEnabled = true (in site โ†’ Advanced Settings)

Config:

<applicationInitialization doAppInitAfterRestart="true">
    <add initializationPage="/"/>
</applicationInitialization>
Code language: HTML, XML (xml)

โœ… 10. Dynamic IP Restrictions

Where:

IIS Manager โ†’ Site โ†’ IP Address and Domain Restrictions

  • Enable:
    • Deny By Concurrent Requests
    • Deny By Request Rate

Config:

<dynamicIpSecurity enableRateLimiting="true" maxRequests="200" requestIntervalInMilliseconds="500" />
Code language: HTML, XML (xml)

โœ… 11. WebSocket Settings

Where:

IIS Manager โ†’ Site โ†’ WebSocket Protocol

  • Disable if unused

Config:

<webSocket enabled="false" />
Code language: HTML, XML (xml)

โœ… 12. HTTP.sys Kernel Settings

Where:

Registry or appcmd, but can be done via Configuration Editor under:
system.webServer/serverRuntime

uploadReadAheadSize

<serverRuntime uploadReadAheadSize="49152" />
Code language: HTML, XML (xml)

MinFileBytesPerSec

<serverRuntime minFileBytesPerSec="240" />
Code language: HTML, XML (xml)

๐ŸŽฏ FINAL SUMMARY (Mapped)

#SettingWhere in IIS ManagerConfig Path
1Start ModeApp Pool โ†’ AdvancedstartMode
2Idle TimeoutApp Pool โ†’ AdvancedidleTimeout
3RecyclingApp Pool โ†’ Recycling<recycling>
4Queue LengthApp Pool โ†’ AdvancedqueueLength
5Max Worker ProcessesApp Pool โ†’ AdvancedmaxProcesses
6Connection TimeoutSite โ†’ Limits<limits>
7HTTP/2System FeatureHTTP.sys
8CompressionServer/Site โ†’ Compression<urlCompression>
9Output CacheSite โ†’ Output Caching<caching>
10Kernel CacheSite โ†’ Output Caching<caching>
11Static HeadersSite โ†’ HTTP Response Headers<customHeaders>
12Modules RemoveSite โ†’ Modules<modules>
13Request Size LimitsSite โ†’ Request Filtering<requestFiltering>
14LoggingSite โ†’ Logging<logFile>
15App InitializationSite โ†’ Config Editor<applicationInitialization>
16IP RestrictionsSite โ†’ IP Restrictions<dynamicIpSecurity>
17WebSocketsSite โ†’ WebSocket<webSocket>
18uploadReadAheadSizeConfig Editor<serverRuntime>

Find Trusted Cardiac Hospitals

Compare heart hospitals by city and services โ€” all in one place.

Explore Hospitals
I'm Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms. I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.

Related Posts

OWASP Dependency-Check โ€” 1-Hour Quick Demo Lab

Level: Beginner / Basic DevSecOpsDuration: 60 minutesFormat: Instructor-led hands-on demoFocus: Install โ†’ scan a real project โ†’ read findings โ†’ understand CVE/CVSS โ†’ generate reports โ†’ demonstrate a simple security gate…

Read More

OWASP Dependency-Checkย – Hands-On Lab Manual

OWASP Dependency-Check 13.0.0 Basic-to-Essentials Hands-On Lab Manual Audience: Beginners and engineers with basic DevOps/DevSecOps knowledgeTutorial verified/researched on: 2026-10-03OWASP Dependency-Check version: 13.0.0Minimum Java supported by Dependency-Check: Java 11Recommended lab Java runtime: Java 17…

Read More

Manufacturing automation: Is it worth investing in the field of manufacturing automation?

An investment in manufacturing automation can pay off. (Photo: Generated with the help of AI) Manufacturing automation has developed from a solution mainly associated with large factories…

Read More

How to Choose a Virtual Machine for Development and Production Workloads

Virtual machines remain a practical building block for development, testing, staging, production services, and infrastructure automation. The challenge is not simply choosing the largest instance available. It…

Read More

System Mechanic vs Advanced SystemCare for Small Teams Without an MDM

If you’re keeping a handful of Windows workstations or test machines healthy without a device-management platform, iolo’s System Mechanic is the better choice over IObit’s Advanced SystemCare…

Read More

How to Plan Infrastructure for a Community Project

Every thriving community project sits on top of infrastructure nobody notices, right up until it breaks. The forum. The server. The backups. The dull plumbing that holds…

Read More
Subscribe
Notify of
guest
2 Comments
Newest
Oldest Most Voted
Skylar Bennett
Skylar Bennett
9 months ago

this is a really useful reference for anyone running .NET on IIS. Youโ€™ve covered all the crucial configuration points: setting the application pool to AlwaysRunning and disabling idle timeโ€‘outs to avoid coldโ€‘starts; tuning queue length and worker processes to handle traffic surges; enabling compression, static/dynamic caching, and HTTP/2/3 to speed up response times; disabling unnecessary IIS modules to minimize overhead; and even configuring request limits, logging, and HTTP.sys kernelโ€‘level optimizations to make the server lean and efficient. By combining these IISโ€‘level tweaks with proper appโ€‘level practices (like asynchronous calls, caching, and efficient routing in .NET), you can significantly reduce latency and improve throughput in production. This kind of holistic approach โ€” infrastructure + platform + code โ€” is exactly what separates a โ€œgood enoughโ€ deployment from a truly highโ€‘performance one. Keep sharing such wellโ€‘structured guidelines!

devopsschool
devopsschool
10 months ago

This checklist makes it clear how much the hosting configuration of Internet Information Services (IIS) matters for a .NET applicationโ€™s real-world performance. By adjusting settings like keeping the application pool โ€œAlwaysRunning,โ€ disabling unnecessary module overhead, enabling HTTP compression and static file caching, and using proper output/kernel caching, one can reduce server load, speed up response times, and avoid common issues like startup delays or 503 errors. The emphasis on fine-tuning connection limits, request filtering, and logging also shows that performance isnโ€™t just about code โ€” server-side tuning plays a huge role. Overall, this is a practical and comprehensive guide worth bookmarking for any ASP.NET/IIS deployment.

2
0
Would love your thoughts, please comment.x
()
x