{"id":54300,"date":"2025-12-02T06:09:08","date_gmt":"2025-12-02T06:09:08","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=54300"},"modified":"2025-12-02T06:09:08","modified_gmt":"2025-12-02T06:09:08","slug":"dotnet-iis-performance-checklist","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/dotnet-iis-performance-checklist\/","title":{"rendered":"DOTNET: IIS Performance Checklist"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>IIS-Only Performance Optimization Settings (Complete List)<\/strong><\/h1>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>1. Application Pool Settings (IIS Core)<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Start Mode<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AlwaysRunning<\/strong><br>\u2192 Avoid cold starts.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Idle Time-out<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Increase or disable (<code>0<\/code>) if you want warm apps.<br>Default (20 min) causes unexpected pool shutdown.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Worker Process Settings<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Maximum Worker Processes<\/strong>\n<ul class=\"wp-block-list\">\n<li>Keep <strong>1<\/strong> (no web garden) for ASP.NET\/Core.<\/li>\n\n\n\n<li>Web gardens only for stateless apps.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Queue Length<\/strong>\n<ul class=\"wp-block-list\">\n<li>Increase from default <strong>1000<\/strong> to 5000\u201320000 depending on load.<br>Prevents <strong>503 (Queue full)<\/strong> errors.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Recycling Settings<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Disable Regular Time-Based Recycling<\/strong><br>Stops unnecessary restarts.<\/li>\n\n\n\n<li><strong>Enable Overlapped Recycling<\/strong><br>Zero-downtime recycling.<\/li>\n\n\n\n<li><strong>Disable application pool recycling at idle<\/strong><br>(set Idle Time-out to 0).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>2. Site-Level Performance Settings<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Connection Limits<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>connectionTimeout<\/strong><\/li>\n\n\n\n<li><strong>maxConnections<\/strong><\/li>\n\n\n\n<li>Keep-alive enabled.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>HTTP\/2 &amp; HTTP\/3<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable <strong>HTTP\/2<\/strong> (and <strong>HTTP\/3<\/strong> on Windows Server 2022+) for higher throughput.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Compression<\/strong><\/h3>\n\n\n\n<p><em>(IIS \u2192 Compression feature)<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Enable Static Compression<\/strong><\/li>\n\n\n\n<li><strong>Enable Dynamic Compression<\/strong><\/li>\n\n\n\n<li>Ensure compression for:\n<ul class=\"wp-block-list\">\n<li>text\/html<\/li>\n\n\n\n<li>text\/css<\/li>\n\n\n\n<li>application\/javascript<\/li>\n\n\n\n<li>application\/json<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Caching (Output Caching \/ Kernel Caching)<\/strong><\/h3>\n\n\n\n<p><em>(IIS \u2192 Output Caching)<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Enable Kernel Caching<\/strong> (huge perf win for static files)<\/li>\n\n\n\n<li><strong>Enable Output Caching<\/strong> for dynamic pages (if safe)<\/li>\n\n\n\n<li>Configure:\n<ul class=\"wp-block-list\">\n<li>Cache duration<\/li>\n\n\n\n<li>Vary-by rules<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>3. Static File Handling Settings<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Static Content<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable <strong>staticContent<\/strong> module<\/li>\n\n\n\n<li>Set <strong>cache-control headers<\/strong> (long max-age)<\/li>\n\n\n\n<li>Enable <strong>ETags<\/strong> or <strong>Last-Modified<\/strong><\/li>\n\n\n\n<li>Make sure <strong>static file module<\/strong> is above ASP.NET modules.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>4. IIS Modules Management (Pipeline)<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Disable\/Remove Unused Modules<\/strong><\/h3>\n\n\n\n<p>Huge performance improvement because <strong>every module executes per request<\/strong>.<\/p>\n\n\n\n<p>Disable modules like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WebDAV<\/li>\n\n\n\n<li>ASP<\/li>\n\n\n\n<li>PHP (if not used)<\/li>\n\n\n\n<li>CGI<\/li>\n\n\n\n<li>ISAPI Filters<\/li>\n\n\n\n<li>Session State<\/li>\n\n\n\n<li>Windows Authentication (if not needed)<\/li>\n\n\n\n<li>Request Filtering (if handled by reverse proxy)<\/li>\n<\/ul>\n\n\n\n<p>Goal: <strong>Lightest possible request pipeline<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>5. Request Filtering (Limits)<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Max Request Size<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tune <strong>maxAllowedContentLength<\/strong><\/li>\n\n\n\n<li>Tune <strong>maxRequestLength<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>URL Length Limits<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prevent long-URL attacks.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Header Limits<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tune <strong>header size<\/strong> limits.<\/li>\n<\/ul>\n\n\n\n<p>All these reduce bad requests hitting Kestrel or app layer.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>6. Logging Settings<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>W3C Logging<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Disable unnecessary fields<\/li>\n\n\n\n<li>Keep logs on <strong>separate fast disk<\/strong><\/li>\n\n\n\n<li>Avoid logging ALL headers (expensive)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 Failed Request Tracing (FREB)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Only enable for targeted diagnostics<\/li>\n\n\n\n<li>Turn off afterward<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>7. Application Initialization (Warm-Up)<\/strong><\/h1>\n\n\n\n<p><em>(IIS \u2192 Configuration Editor \u2192 system.webServer\/applicationInitialization)<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DoAppInitAfterRestart = True<\/strong><\/li>\n\n\n\n<li><strong>PreloadEnabled = True<\/strong><\/li>\n<\/ul>\n\n\n\n<p>This ensures app is warm and ready before first user hit.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>8. Dynamic IP Restrictions (DoS protection)<\/strong><\/h1>\n\n\n\n<p>Not directly performance but prevents IIS from being overwhelmed.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable <strong>Dynamic Deny<\/strong> based on:\n<ul class=\"wp-block-list\">\n<li>Request rate<\/li>\n\n\n\n<li>Concurrent requests<\/li>\n\n\n\n<li>Bad requests<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>9. WebSockets \/ Long-Running Connections Settings<\/strong><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable only if needed.<\/li>\n\n\n\n<li>Disable WebSockets for performance if app does not use them.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>10. Client Keep-Alive Settings<\/strong><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep-alive <strong>enabled<\/strong><\/li>\n\n\n\n<li>Keep-alive timeout tuned (15\u2013120 seconds depending on use)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>11. Centralized Configuration That Impacts Performance<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>applicationHost.config<\/strong><\/h3>\n\n\n\n<p>Key performance elements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>&lt;system.webServer\/serverRuntime uploadReadAheadSize=\"\u2026\"><\/code><\/li>\n\n\n\n<li><code>&lt;system.webServer\/security\/requestFiltering><\/code><\/li>\n\n\n\n<li><code>&lt;system.webServer\/httpCompression><\/code><\/li>\n\n\n\n<li><code>&lt;system.webServer\/webSocket><\/code><\/li>\n\n\n\n<li><code>&lt;system.webServer\/cache><\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>12. Kernel-Mode Optimizations (HTTP.sys)<\/strong><\/h1>\n\n\n\n<p><em>(These are still considered IIS-level because IIS sits on top of HTTP.sys)<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Enable Kernel Caching<\/strong><\/h3>\n\n\n\n<p>\u2192 Boosts static file performance massively.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Set MaxBandwidth &amp; MinFileBytesPrSec<\/strong><\/h3>\n\n\n\n<p>\u2192 Prevents slow clients from consuming server I\/O.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 <strong>Enable URL ACL Tuning<\/strong><\/h3>\n\n\n\n<p>\u2192 Helps reduce request overhead.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83c\udfaf FINAL OUTPUT<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Exact list of IIS settings that impact performance:<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>App Pool<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AlwaysRunning<\/li>\n\n\n\n<li>Idle Timeout<\/li>\n\n\n\n<li>Recycling settings<\/li>\n\n\n\n<li>Maximum Worker Processes<\/li>\n\n\n\n<li>Queue Length<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Compression<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Static compression<\/li>\n\n\n\n<li>Dynamic compression<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Caching<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kernel caching<\/li>\n\n\n\n<li>Output caching<\/li>\n\n\n\n<li>Static file caching<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Modules<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Disable unused modules<\/li>\n\n\n\n<li>Optimize pipeline<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Request filtering<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>maxRequestLength<\/li>\n\n\n\n<li>maxAllowedContentLength<\/li>\n\n\n\n<li>URL\/header limits<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Connection settings<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>connectionTimeout<\/li>\n\n\n\n<li>maxConnections<\/li>\n\n\n\n<li>Keep-alive<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>HTTP\/2 \/ HTTP\/3<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Logging<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trim fields<\/li>\n\n\n\n<li>Optimize log location<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Application Initialization<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PreloadEnabled<\/li>\n\n\n\n<li>DoAppInitAfterRestart<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Static file handling<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cache-control headers<\/li>\n\n\n\n<li>ETags<\/li>\n\n\n\n<li>Last-Modified<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dynamic IP Restrictions<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable rate limiting<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>HTTP.sys kernel settings<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uploadReadAheadSize<\/li>\n\n\n\n<li>MinFileBytesPerSec<\/li>\n\n\n\n<li>MaxBandwidth<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><br>Here is the <strong>exact location of every IIS performance optimization setting<\/strong> \u2014 <strong>which GUI blade<\/strong>, <strong>which config file<\/strong>, or <strong>which PowerShell command<\/strong> you must use.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>1. Application Pool Settings (All performance-critical)<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1.1 Start Mode \u2192 \u201cAlwaysRunning\u201d<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where to configure:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IIS Manager \u2192 <strong>Application Pools<\/strong><\/li>\n\n\n\n<li>Select your App Pool \u2192 <strong>Advanced Settings<\/strong><\/li>\n\n\n\n<li><strong>Start Mode = AlwaysRunning<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config file:<\/h3>\n\n\n\n<p><code>applicationHost.config<\/code><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">applicationPoolDefaults<\/span> <span class=\"hljs-attr\">...<\/span> <span class=\"hljs-attr\">startMode<\/span>=<span class=\"hljs-string\">\"AlwaysRunning\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1.2 Idle Timeout<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IIS Manager \u2192 Application Pools \u2192 Your Pool \u2192 <strong>Advanced Settings<\/strong><\/li>\n\n\n\n<li><strong>Idle Time-out (minutes)<\/strong> \u2192 Set to <strong>0<\/strong> for performance-sensitive apps<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">processModel<\/span> <span class=\"hljs-attr\">idleTimeout<\/span>=<span class=\"hljs-string\">\"00:00:00\"<\/span>\/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1.3 Recycling Settings<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Application Pools \u2192 Your Pool \u2192 <strong>Recycling\u2026<\/strong><\/p>\n\n\n\n<p>Disable:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regular Time Interval<\/li>\n\n\n\n<li>Specific Time<\/li>\n\n\n\n<li>Memory-based recycling unless required<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">recycling<\/span> <span class=\"hljs-attr\">periodicRestart<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">schedule<\/span> \/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">recycling<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1.4 Queue Length<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Application Pools \u2192 Your Pool \u2192 <strong>Advanced Settings<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Queue Length = 5000\u201320000<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">applicationPoolDefaults<\/span> <span class=\"hljs-attr\">queueLength<\/span>=<span class=\"hljs-string\">\"20000\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1.5 Maximum Worker Processes<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Application Pools \u2192 Your Pool \u2192 <strong>Advanced Settings<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Maximum Worker Processes = 1<\/strong> (no web garden)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">processModel<\/span> <span class=\"hljs-attr\">maxProcesses<\/span>=<span class=\"hljs-string\">\"1\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>2. Site-Level Settings<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2.1 connectionTimeout + Keep-Alive<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Sites \u2192 Select Site \u2192 <strong>Limits\u2026<\/strong><\/p>\n\n\n\n<p>You can configure:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Connection timeout<\/strong><\/li>\n\n\n\n<li><strong>Max connections<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">limits<\/span> <span class=\"hljs-attr\">connectionTimeout<\/span>=<span class=\"hljs-string\">\"00:02:00\"<\/span> <span class=\"hljs-attr\">maxConnections<\/span>=<span class=\"hljs-string\">\"100000\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2.2 Enable HTTP\/2 \/ HTTP\/3<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows Features \u2192 <strong>HTTP\/2<\/strong> is enabled automatically if:\n<ul class=\"wp-block-list\">\n<li>Server 2016+: HTTP\/2 TLS<\/li>\n\n\n\n<li>Server 2022+: HTTP\/3 optional feature<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">system.webServer<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">httpProtocol<\/span> <span class=\"hljs-attr\">allowKeepAlive<\/span>=<span class=\"hljs-string\">\"true\"<\/span> \/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">system.webServer<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>3. Compression<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3.1 Static Compression<\/strong><\/h2>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3.2 Dynamic Compression<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Server or Site \u2192 <strong>Compression<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable:<br>\u2714 Static compression<br>\u2714 Dynamic compression<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">urlCompression<\/span> <span class=\"hljs-attr\">doStaticCompression<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">doDynamicCompression<\/span>=<span class=\"hljs-string\">\"true\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>4. Caching<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4.1 Output Caching<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>Output Caching<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable Cache<\/li>\n\n\n\n<li>Add caching rules<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">caching<\/span> <span class=\"hljs-attr\">enabled<\/span>=<span class=\"hljs-string\">\"true\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">profiles<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">add<\/span> <span class=\"hljs-attr\">extension<\/span>=<span class=\"hljs-string\">\".aspx\"<\/span> <span class=\"hljs-attr\">policy<\/span>=<span class=\"hljs-string\">\"CacheUntilChange\"<\/span> <span class=\"hljs-attr\">duration<\/span>=<span class=\"hljs-string\">\"3600\"<\/span>\/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">profiles<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">caching<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4.2 Kernel Caching<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Server \u2192 <strong>Feature Delegation<\/strong><br>Ensure:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Output Caching = Read\/Write<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">caching<\/span> <span class=\"hljs-attr\">enableKernelCache<\/span>=<span class=\"hljs-string\">\"true\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>5. Static File Handling<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5.1 Cache-Control headers<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>HTTP Response Headers<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add \u2192 <code>Cache-Control: public, max-age=31536000<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">httpProtocol<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">customHeaders<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">add<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"Cache-Control\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"public, max-age=31536000\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">customHeaders<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">httpProtocol<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>6. Modules Optimization (DISABLING unused modules)<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>Modules<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Remove:\n<ul class=\"wp-block-list\">\n<li>WebDAV<\/li>\n\n\n\n<li>ASP<\/li>\n\n\n\n<li>ISAPI Filters<\/li>\n\n\n\n<li>CGI<\/li>\n\n\n\n<li>Windows Authentication (if unused)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">modules<\/span>&gt;<\/span>\n   <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">remove<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"WebDAV\"<\/span> \/&gt;<\/span>\n   <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">remove<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"ISAPI-filter\"<\/span> \/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">modules<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>7. Request Filtering<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7.1 Max Request Body Size<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>Request Filtering \u2192 Rules \u2192 Request Limits<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>maxAllowedContentLength<\/strong><\/li>\n\n\n\n<li><strong>maxUrl<\/strong><\/li>\n\n\n\n<li><strong>maxQueryString<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">requestFiltering<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">requestLimits<\/span> <span class=\"hljs-attr\">maxAllowedContentLength<\/span>=<span class=\"hljs-string\">\"52428800\"<\/span> \/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">requestFiltering<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>8. Logging Settings<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>Logging<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose fields<\/li>\n\n\n\n<li>Directory location<\/li>\n\n\n\n<li>Format<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">logFile<\/span> <span class=\"hljs-attr\">enabled<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">directory<\/span>=<span class=\"hljs-string\">\"D:\\IISLogs\"<\/span> <span class=\"hljs-attr\">logExtFileFlags<\/span>=<span class=\"hljs-string\">\"Date,Time,ClientIP,...\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>9. Application Initialization (Warm-Up)<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>Configuration Editor<\/strong><br>Section:<br><code>system.webServer\/applicationInitialization<\/code><\/p>\n\n\n\n<p>Set:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>doAppInitAfterRestart = true<\/strong><\/li>\n\n\n\n<li><strong>remapManagedRequestsTo = &#8220;true&#8221;<\/strong><\/li>\n\n\n\n<li><strong>preloadEnabled = true<\/strong> (in site \u2192 Advanced Settings)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">applicationInitialization<\/span> <span class=\"hljs-attr\">doAppInitAfterRestart<\/span>=<span class=\"hljs-string\">\"true\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">add<\/span> <span class=\"hljs-attr\">initializationPage<\/span>=<span class=\"hljs-string\">\"\/\"<\/span>\/&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">applicationInitialization<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>10. Dynamic IP Restrictions<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>IP Address and Domain Restrictions<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable:\n<ul class=\"wp-block-list\">\n<li>Deny By Concurrent Requests<\/li>\n\n\n\n<li>Deny By Request Rate<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dynamicIpSecurity<\/span> <span class=\"hljs-attr\">enableRateLimiting<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">maxRequests<\/span>=<span class=\"hljs-string\">\"200\"<\/span> <span class=\"hljs-attr\">requestIntervalInMilliseconds<\/span>=<span class=\"hljs-string\">\"500\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>11. WebSocket Settings<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>IIS Manager \u2192 Site \u2192 <strong>WebSocket Protocol<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Disable if unused<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Config:<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">webSocket<\/span> <span class=\"hljs-attr\">enabled<\/span>=<span class=\"hljs-string\">\"false\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u2705 <strong>12. HTTP.sys Kernel Settings<\/strong><\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Where:<\/h3>\n\n\n\n<p>Registry or appcmd, but can be done via Configuration Editor under:<br><code>system.webServer\/serverRuntime<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">uploadReadAheadSize<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">serverRuntime<\/span> <span class=\"hljs-attr\">uploadReadAheadSize<\/span>=<span class=\"hljs-string\">\"49152\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">MinFileBytesPerSec<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">serverRuntime<\/span> <span class=\"hljs-attr\">minFileBytesPerSec<\/span>=<span class=\"hljs-string\">\"240\"<\/span> \/&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83c\udfaf FINAL SUMMARY (Mapped)<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>#<\/th><th>Setting<\/th><th>Where in IIS Manager<\/th><th>Config Path<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Start Mode<\/td><td>App Pool \u2192 Advanced<\/td><td><code>startMode<\/code><\/td><\/tr><tr><td>2<\/td><td>Idle Timeout<\/td><td>App Pool \u2192 Advanced<\/td><td><code>idleTimeout<\/code><\/td><\/tr><tr><td>3<\/td><td>Recycling<\/td><td>App Pool \u2192 Recycling<\/td><td><code>&lt;recycling&gt;<\/code><\/td><\/tr><tr><td>4<\/td><td>Queue Length<\/td><td>App Pool \u2192 Advanced<\/td><td><code>queueLength<\/code><\/td><\/tr><tr><td>5<\/td><td>Max Worker Processes<\/td><td>App Pool \u2192 Advanced<\/td><td><code>maxProcesses<\/code><\/td><\/tr><tr><td>6<\/td><td>Connection Timeout<\/td><td>Site \u2192 Limits<\/td><td><code>&lt;limits&gt;<\/code><\/td><\/tr><tr><td>7<\/td><td>HTTP\/2<\/td><td>System Feature<\/td><td>HTTP.sys<\/td><\/tr><tr><td>8<\/td><td>Compression<\/td><td>Server\/Site \u2192 Compression<\/td><td><code>&lt;urlCompression&gt;<\/code><\/td><\/tr><tr><td>9<\/td><td>Output Cache<\/td><td>Site \u2192 Output Caching<\/td><td><code>&lt;caching&gt;<\/code><\/td><\/tr><tr><td>10<\/td><td>Kernel Cache<\/td><td>Site \u2192 Output Caching<\/td><td><code>&lt;caching&gt;<\/code><\/td><\/tr><tr><td>11<\/td><td>Static Headers<\/td><td>Site \u2192 HTTP Response Headers<\/td><td><code>&lt;customHeaders&gt;<\/code><\/td><\/tr><tr><td>12<\/td><td>Modules Remove<\/td><td>Site \u2192 Modules<\/td><td><code>&lt;modules&gt;<\/code><\/td><\/tr><tr><td>13<\/td><td>Request Size Limits<\/td><td>Site \u2192 Request Filtering<\/td><td><code>&lt;requestFiltering&gt;<\/code><\/td><\/tr><tr><td>14<\/td><td>Logging<\/td><td>Site \u2192 Logging<\/td><td><code>&lt;logFile&gt;<\/code><\/td><\/tr><tr><td>15<\/td><td>App Initialization<\/td><td>Site \u2192 Config Editor<\/td><td><code>&lt;applicationInitialization&gt;<\/code><\/td><\/tr><tr><td>16<\/td><td>IP Restrictions<\/td><td>Site \u2192 IP Restrictions<\/td><td><code>&lt;dynamicIpSecurity&gt;<\/code><\/td><\/tr><tr><td>17<\/td><td>WebSockets<\/td><td>Site \u2192 WebSocket<\/td><td><code>&lt;webSocket&gt;<\/code><\/td><\/tr><tr><td>18<\/td><td>uploadReadAheadSize<\/td><td>Config Editor<\/td><td><code>&lt;serverRuntime&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2705 IIS-Only Performance Optimization Settings (Complete List) 1. Application Pool Settings (IIS Core) \u2714 Start Mode \u2714 Idle Time-out \u2714 Worker Process Settings \u2714 Recycling Settings 2. Site-Level Performance Settings&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[11138],"tags":[],"class_list":["post-54300","post","type-post","status-publish","format-standard","hentry","category-best-tools"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/54300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=54300"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/54300\/revisions"}],"predecessor-version":[{"id":54301,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/54300\/revisions\/54301"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=54300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=54300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=54300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}