Summary: In IIS 8.5 on Windows Server 2012 R2, when I set an application pool to Suspend on timeout, and it drops into Suspend mode, Powershell commands that attempt to look at that Application Pool last 2 minutes before completing.
If anyone can help, I'd be very appreciative.
Here are my recreation steps:
install/deploy a new Windows Server 2012 R2 server
install windows features:
Desktop-Experience
FileAndStorage-Services
File-Services
FS-DFS-Namespace
FS-DFS-Replication
FS-FileServer
FS-SMB1
InkAndHandwritingServices
NET-Framework-45-ASPNET
NET-Framework-45-Core
NET-Framework-45-Features
NET-WCF-HTTP-Activation45
NET-WCF-Pipe-Activation45
NET-WCF-Services45
NET-WCF-TCP-PortSharing45
PowerShell
PowerShell-ISE
PowerShellRoot
RSAT
RSAT-AD-AdminCenter
RSAT-ADDS
RSAT-ADDS-Tools
RSAT-ADLDS
RSAT-AD-PowerShell
RSAT-AD-Tools
RSAT-DFS-Mgmt-Con
RSAT-DFS-Mgmt-Con
RSAT-Feature-Tools
RSAT-File-Services
RSAT-File-Services
RSAT-RDS-Tools
RSAT-Role-Tools
RSAT-SMTP
RSAT-SNMP
Server-Gui-Mgmt-Infra
Server-Gui-Shell
Server-Media-Foundation
SMTP-Server
SNMP-Service
Storage-Services
UpdateServices-RSAT
UpdateServices-UI
User-Interfaces-Infra
User-Interfaces-Infra
WAS
WAS-Config-APIs
WAS-Process-Model
Web-App-Dev
Web-AppInit
Web-ASP
Web-Asp-Net45
Web-Basic-Auth
Web-Common-Http
Web-Custom-Logging
Web-Default-Doc
Web-Dir-Browsing
Web-Filtering
Web-Health
Web-Http-Errors
Web-Http-Logging
Web-Http-Redirect
Web-Http-Tracing
Web-ISAPI-Ext
Web-ISAPI-Filter
Web-Lgcy-Mgmt-Console
Web-Lgcy-Scripting
Web-Log-Libraries
Web-Metabase
Web-Mgmt-Compat
Web-Mgmt-Console
Web-Mgmt-Service
Web-Mgmt-Tools
Web-Net-Ext45
Web-ODBC-Logging
Web-Performance
Web-Request-Monitor
Web-Scripting-Tools
Web-Security
Web-Server
Web-Stat-Compression
Web-Static-Content
Web-WebServer
Web-Windows-Auth
Web-WMI
WoW64-Support
reboot
IIS should now be installed and running with default settings.
IIS->Application Pools->DefaultAppPool->Advanced Settings, change Idle Time-out from Terminate to Suspend
optionally switch Idle Time-out (minutes) from 20 to something lower like 1 minute
recycle app pool to ensure the new settings take effect
open IE and go to localhost to hit the IISstart.htm front page.
This should fire up the w3wp.exe process associated with that application pool (user name should match defaultapppool)
open PowerShell:
ipmo webadministration
ls IIS:\AppPools\
this should list the app pools pretty quickly.
Wait for the application pool to timeout. The w3wp.exe process will drop from using about 15MB RAM down to 1-2MB RAM.
Run "ls IIS:\Apppools\" in PowerShell again.
While the application is in suspend mode, this command will hang for exactly 2 minutes before completing and it hangs on the app pool that is in suspend.
Recycle the application pool or refresh the page in IE to take it out of Suspend, and the "ls IIS:\AppPools\" command will be fast again.
The IIS GUI does not experience this slowdown. The only slowness are commands in PowerShell that reference this application pool, either to list them all, of even to just get-item that specific app pool.