by wethereyet at 2012-09-12 17:55:25
Greetings all, (noob alert)by wethereyet at 2012-09-12 22:06:21
I have an app thats never releasing close_wait tcp sessions causing eventual port exhaustion in the ephemeral range and the app to stop taking new connections (rpc crashing etc). Unfortunately the vendor is not helpful so I’ve found a workaround. I can release them by recycling the application COM+ running process which creates a new dllhost process allowing me to remove the old dllhost process thats storing the close_wait sessions. (doesnt affect established connections).
I’ve whipped a dirty bare bones script but I’m having problems with the $comAdmin.RecycleApplicationInstances - is anyone able to get that to work?
Many thanks
Error:
Cannot find an overload for "RecycleApplicationInstances" and the argument count: "1".
+ $comAdmin.RecycleApplicationInstances <<<< ("$runningapp")
Code:
$SPFComApp = "ServicedCom"
#Connect to the COM+ Applications
$comAdmin = New-Object -comobject COMAdmin.COMAdminCatalog
$apps = $comAdmin.GetCollection("Applications")
$apps.populate()
#Connect to required COM+ Application
$app = $apps | where-object {$.Name -eq "$SPFComApp"}
#Get correct dllhost process id to end task after recycling the pool
$classid = $app.key
$getdllprocess = gwmi -Class Win32_Process | ? {$.CommandLine -like "$classid"}
$processid = $getdllprocess.processid
$runningapp = $comAdmin.GetApplicationInstanceIDFromProcessID("$processid")
$comAdmin.RecycleApplicationInstances("$runningapp")
#Stop-Process $processid
I suspected I had the format wrong. Requires an reason code also. Made one up http://msdn.microsoft.com/en-us/library … 63(v=vs.90).aspx
$comAdmin.RecycleApplicationInstances("$runningapp","666")