Terminate w3wp.exe process without stopping website
Here is a quick way to terminate w3wp.exe process in Azure App Service Website without stopping the whole website.
Note : Azure AppService website can run on multiple instances and there is another w3wp.exe process called SCM running on each instance (we shouldn’t kill this process). So we just have to get list of all instances running the website using Get-AzureRMResource cmdlet. On each instance, we need to get list of processes running using same Get-AzureRMResource cmdlet. Next, we need to check if this process is w3wp.exe process and see if the SCM property is true. Last step is using Remove-AzureRMResource to terminate the process.
Azure Resource Explorer is the best tool that can help us to pick the right PowerShell cmdlet to use and what parameters to pass. Just click on PowerShell tab in the resource explorer as shown below.
Login-AzureRmAccount
$resoureGroupName = "wabac"
$websiteName = "wabacblue"
$instances = Get-AzureRmResource -ResourceGroupName $resoureGroupName `
-ResourceType Microsoft.Web/sites/instances `
-ResourceName $websiteName `
-ApiVersion 2018-02-01
foreach($instance in $instances)
{
$instanceName = $instance.Name
Write-Host "Site Instance Name : " $instanceName
$processes = Get-AzureRmResource -ResourceGroupName $resoureGroupName `
-ResourceType Microsoft.Web/sites/instances/processes `
-ResourceName $websiteName/$instanceName `
-ApiVersion 2018-02-01
foreach($process in $processes)
{
$exeName = $process.Properties.Name
Write-Host "`tEXE Name : " $exeName
if($exeName -eq "w3wp")
{
$processId = $process.Properties.id
Write-Host "`t`tProcess ID : " $processId
$processDetails = Get-AzureRmResource -ResourceGroupName $resoureGroupName `
-ResourceType Microsoft.Web/sites/instances/processes `
-ResourceName $websiteName/$instanceName/$processId `
-ApiVersion 2018-02-01
Write-Host "`t`tSCM Value : " $processDetails.Properties.is_scm_site
if($processDetails.Properties.is_scm_site -ne $true)
{
Write-Host "`t`t`tNot a SCM Process : " $process.Properties.Name
$deleted = Remove-AzureRmResource -ResourceGroupName $resoureGroupName `
-ResourceType Microsoft.Web/sites/instances/processes `
-ResourceName $websiteName/$instanceName/$processId `
-ApiVersion 2018-02-01 -Force
if($deleted -eq $true)
{
Write-Host "`t`t`t`tW3wp process killed" -ForegroundColor Green
}
else
{
Write-Host "`t`t`t`tFailed to kill W3wp process" -ForegroundColor Red
}
}
}
}
}