IIS AppPool - Update Recycle Settings

Octopus.Script exported 2017-07-05 by bobjwalker belongs to ‘IIS’ category.

Update the worker process and app pool timeout/recycle times.

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Application pool

ApplicationPoolName =

The name of the application pool to modify. The application pool must already exist.

Process idle timeout

IdleTimeoutMinutes =

Amount of time (in minutes) a worker process will remain idle before it shuts down. A value of 0 means the process does not shut down after an idle timeout.

Application pool recycle time interval

RegularTimeIntervalMinutes =

Period of time (in minutes) after which the application pool will recycle. A value of 0 means the application pool does not recycle on a regular interval.

Application pool periodic recycle time

PeriodicRecycleTime =

A specific local time, in minutes after midnight, when the application pool is recycled. Seperate multiple times by using a ,

Example: “30” for half an hour past midnight. or “0, 360” for midnight and 6 am.

Recycle Events To Log

RecycleEventsToLog =

Event Log entries can be generated when an application pool is recycled. Select the Recycling events to log. The Options are Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory. These should be entered in a comma separated list.

Example: “OnDemand,ConfigChange”

Empty values reset

EmptyClearsValue = false

When checked, if the values are not set it will remove the setting from IIS.

Script body

Steps based on this template will execute the following PowerShell script.

Import-Module WebAdministration

function Update-IISAppPool-PeriodicRestart($appPool, $periodicRestart) {
    Write-Output "Setting worker process periodic restart time to $periodicRestart for AppPool $appPoolName."
    $appPool.Recycling.PeriodicRestart.Time = [TimeSpan]::FromMinutes($periodicRestart)
    $appPool | Set-Item
}

function Update-IISAppPool-IdleTimeout($appPool, $appPoolName, $idleTimeout) {
    Write-Output "Setting worker process idle timeout to $idleTimeout for AppPool $appPoolName."
    $appPool.ProcessModel.IdleTimeout = [TimeSpan]::FromMinutes($idleTimeout)
    $appPool | Set-Item
}

function Update-IISAppPool-ScheduledTimes($appPool, $appPoolName, $schedule) {
    $minutes = $periodicRecycleTimes.Split(",")
    $minuteArrayList = New-Object System.Collections.ArrayList

    foreach ($minute in $minutes) {
        $minute = $minute.trim()

        if ($minute -eq "-1") {
            break
        }
        if ($minute -lt 0) {
            continue
        }

        $temp = $minuteArrayList.Add([TimeSpan]::FromMinutes($minute))
    }

    Write-Output "Setting worker process scheduled restart times to $minuteArrayList for AppPool $appPoolName."

    $settingName = "recycling.periodicRestart.schedule"
    Clear-ItemProperty $appPool.PSPath -Name $settingName
        
    $doneOne = $false
    foreach ($minute in $minuteArrayList) {
        if ($doneOne -eq $false) {
            Set-ItemProperty $appPool.PSPath -Name $settingName -Value @{value=$minute}
            $doneOne = $true
        }
        else {
            New-ItemProperty $appPool.PSPath -Name $settingName -Value @{value=$minute}
        }
    }
}

function Update-IISAppPool-RecycleEventsToLog($appPool, $appPoolName, $events) {
    $settingName = "Recycling.logEventOnRecycle"
    Write-Output "Setting $settingName for AppPool $appPoolName to $events."

    Clear-ItemProperty $appPool.PSPath -Name $settingName
    if ($events -ne "-") {
        Set-ItemProperty $appPool.PSPath -Name $settingName -Value $events
    }
}

function Run {
    $OctopusParameters = $OctopusParameters
    if ($OctopusParameters -eq $null) {
        write-host "Using test values"
        $OctopusParameters = New-Object "System.Collections.Hashtable"
        $OctopusParameters["ApplicationPoolName"]="DefaultAppPool"
        $OctopusParameters["IdleTimeoutMinutes"]=""
        $OctopusParameters["RegularTimeIntervalMinutes"]="10"
        $OctopusParameters["PeriodicRecycleTime"]="14,15,16"
        $OctopusParameters["RecycleEventsToLog"]="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"
        $OctopusParameters["EmptyClearsValue"]=$true
    }

    $applicationPoolName = $OctopusParameters["ApplicationPoolName"]
    $idleTimeout = $OctopusParameters["IdleTimeoutMinutes"]
    $periodicRestart = $OctopusParameters["RegularTimeIntervalMinutes"]
    $periodicRecycleTimes = $OctopusParameters["PeriodicRecycleTime"]
    $recycleEventsToLog = $OctopusParameters["RecycleEventsToLog"]
    $emptyClearsValue = $OctopusParameters["EmptyClearsValue"]

    if ([string]::IsNullOrEmpty($applicationPoolName)) {
        throw "Application pool name is required."
    }

    $appPool = Get-Item IIS:\AppPools\$applicationPoolName

    if ($emptyClearsValue -eq $true) {
        Write-Output "Empty values will reset to default"
        if ([string]::IsNullOrEmpty($idleTimeout)) {
            $idleTimeout = "0"
        }
        if ([string]::IsNullOrEmpty($periodicRestart)) {
            $periodicRestart = "0"
        }
        if ([string]::IsNullOrEmpty($periodicRecycleTimes)) {
            $periodicRecycleTimes = "-1"
        }
        if ([string]::IsNullOrEmpty($recycleEventsToLog)) {
            $recycleEventsToLog = "-"
        }
    }

    if (![string]::IsNullOrEmpty($periodicRestart)) {
        Update-IISAppPool-PeriodicRestart              -appPool $appPool -appPoolName $appPool.Name -PeriodicRestart $periodicRestart
    }
    if (![string]::IsNullOrEmpty($idleTimeout)) {
        Update-IISAppPool-IdleTimeout                  -appPool $appPool -appPoolName $appPool.Name -idleTimeout $idleTimeout
    }
    if (![string]::IsNullOrEmpty($periodicRecycleTimes)) {
        Update-IISAppPool-ScheduledTimes               -appPool $appPool -appPoolName $appPool.Name -Schedule $periodicRecycleTimes
    }
    if(![string]::IsNullOrEmpty($recycleEventsToLog)){
        Update-IISAppPool-RecycleEventsToLog           -appPool $appPool -appPoolName $appPool.Name -Events $recycleEventsToLog    
    }
}

Run

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "5d771fd0-710c-41a7-9969-10bc75d00307",
  "Name": "IIS AppPool - Update Recycle Settings",
  "Description": "Update the worker process and app pool timeout/recycle times.",
  "Version": 7,
  "ExportedAt": "2017-07-05T23:25:56.598Z",
  "ActionType": "Octopus.Script",
  "Author": "bobjwalker",
  "Parameters": [
    {
      "Id": "0fd90579-79b4-4086-8c7c-602cf21f9f10",
      "Name": "ApplicationPoolName",
      "Label": "Application pool",
      "HelpText": "The name of the application pool to modify. The application pool must already exist.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "4c1c4df5-4282-43f4-9119-e514016b4230",
      "Name": "IdleTimeoutMinutes",
      "Label": "Process idle timeout",
      "HelpText": "Amount of time (in minutes) a worker process will remain idle before it shuts down. A value of 0 means the process does not shut down after an idle timeout.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "516e588b-b9e3-43cc-8342-7f50c97e138b",
      "Name": "RegularTimeIntervalMinutes",
      "Label": "Application pool recycle time interval",
      "HelpText": "Period of time (in minutes) after which the application pool will recycle. A value of 0 means the application pool does not recycle on a regular interval.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "a8121270-e728-4fe5-bf1b-f75cb5075516",
      "Name": "PeriodicRecycleTime",
      "Label": "Application pool periodic recycle time",
      "HelpText": "A specific local time, in minutes after midnight, when the application pool is recycled. Seperate multiple times by using a ,\n\nExample: \"30\" for half an hour past midnight. or \"0, 360\" for midnight and 6 am.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "fd4fe130-1bed-41ee-a1b5-73a080cc3ca5",
      "Name": "RecycleEventsToLog",
      "Label": "Recycle Events To Log",
      "HelpText": "Event Log entries can be generated when an application pool is recycled. Select the Recycling events to log. The Options are **Time**, **Requests**, **Schedule**, **Memory**, **IsapiUnhealthy**, **OnDemand**, **ConfigChange**,  **PrivateMemory**. These should be entered in a comma separated list. \n\nExample: \"OnDemand,ConfigChange\"",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "bb164dea-1843-4655-a0e2-b29f990b44b7",
      "Name": "EmptyClearsValue",
      "Label": "Empty values reset",
      "HelpText": "When checked, if the values are not set it will remove the setting from IIS.",
      "DefaultValue": "false",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      },
      "Links": {}
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptBody": "Import-Module WebAdministration\n\nfunction Update-IISAppPool-PeriodicRestart($appPool, $periodicRestart) {\n    Write-Output \"Setting worker process periodic restart time to $periodicRestart for AppPool $appPoolName.\"\n    $appPool.Recycling.PeriodicRestart.Time = [TimeSpan]::FromMinutes($periodicRestart)\n    $appPool | Set-Item\n}\n\nfunction Update-IISAppPool-IdleTimeout($appPool, $appPoolName, $idleTimeout) {\n    Write-Output \"Setting worker process idle timeout to $idleTimeout for AppPool $appPoolName.\"\n    $appPool.ProcessModel.IdleTimeout = [TimeSpan]::FromMinutes($idleTimeout)\n    $appPool | Set-Item\n}\n\nfunction Update-IISAppPool-ScheduledTimes($appPool, $appPoolName, $schedule) {\n    $minutes = $periodicRecycleTimes.Split(\",\")\n    $minuteArrayList = New-Object System.Collections.ArrayList\n\n    foreach ($minute in $minutes) {\n        $minute = $minute.trim()\n\n        if ($minute -eq \"-1\") {\n            break\n        }\n        if ($minute -lt 0) {\n            continue\n        }\n\n        $temp = $minuteArrayList.Add([TimeSpan]::FromMinutes($minute))\n    }\n\n    Write-Output \"Setting worker process scheduled restart times to $minuteArrayList for AppPool $appPoolName.\"\n\n    $settingName = \"recycling.periodicRestart.schedule\"\n    Clear-ItemProperty $appPool.PSPath -Name $settingName\n        \n    $doneOne = $false\n    foreach ($minute in $minuteArrayList) {\n        if ($doneOne -eq $false) {\n            Set-ItemProperty $appPool.PSPath -Name $settingName -Value @{value=$minute}\n            $doneOne = $true\n        }\n        else {\n            New-ItemProperty $appPool.PSPath -Name $settingName -Value @{value=$minute}\n        }\n    }\n}\n\nfunction Update-IISAppPool-RecycleEventsToLog($appPool, $appPoolName, $events) {\n    $settingName = \"Recycling.logEventOnRecycle\"\n    Write-Output \"Setting $settingName for AppPool $appPoolName to $events.\"\n\n    Clear-ItemProperty $appPool.PSPath -Name $settingName\n    if ($events -ne \"-\") {\n        Set-ItemProperty $appPool.PSPath -Name $settingName -Value $events\n    }\n}\n\nfunction Run {\n    $OctopusParameters = $OctopusParameters\n    if ($OctopusParameters -eq $null) {\n        write-host \"Using test values\"\n        $OctopusParameters = New-Object \"System.Collections.Hashtable\"\n        $OctopusParameters[\"ApplicationPoolName\"]=\"DefaultAppPool\"\n        $OctopusParameters[\"IdleTimeoutMinutes\"]=\"\"\n        $OctopusParameters[\"RegularTimeIntervalMinutes\"]=\"10\"\n        $OctopusParameters[\"PeriodicRecycleTime\"]=\"14,15,16\"\n        $OctopusParameters[\"RecycleEventsToLog\"]=\"Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory\"\n        $OctopusParameters[\"EmptyClearsValue\"]=$true\n    }\n\n    $applicationPoolName = $OctopusParameters[\"ApplicationPoolName\"]\n    $idleTimeout = $OctopusParameters[\"IdleTimeoutMinutes\"]\n    $periodicRestart = $OctopusParameters[\"RegularTimeIntervalMinutes\"]\n    $periodicRecycleTimes = $OctopusParameters[\"PeriodicRecycleTime\"]\n    $recycleEventsToLog = $OctopusParameters[\"RecycleEventsToLog\"]\n    $emptyClearsValue = $OctopusParameters[\"EmptyClearsValue\"]\n\n    if ([string]::IsNullOrEmpty($applicationPoolName)) {\n        throw \"Application pool name is required.\"\n    }\n\n    $appPool = Get-Item IIS:\\AppPools\\$applicationPoolName\n\n    if ($emptyClearsValue -eq $true) {\n        Write-Output \"Empty values will reset to default\"\n        if ([string]::IsNullOrEmpty($idleTimeout)) {\n            $idleTimeout = \"0\"\n        }\n        if ([string]::IsNullOrEmpty($periodicRestart)) {\n            $periodicRestart = \"0\"\n        }\n        if ([string]::IsNullOrEmpty($periodicRecycleTimes)) {\n            $periodicRecycleTimes = \"-1\"\n        }\n        if ([string]::IsNullOrEmpty($recycleEventsToLog)) {\n            $recycleEventsToLog = \"-\"\n        }\n    }\n\n    if (![string]::IsNullOrEmpty($periodicRestart)) {\n        Update-IISAppPool-PeriodicRestart              -appPool $appPool -appPoolName $appPool.Name -PeriodicRestart $periodicRestart\n    }\n    if (![string]::IsNullOrEmpty($idleTimeout)) {\n        Update-IISAppPool-IdleTimeout                  -appPool $appPool -appPoolName $appPool.Name -idleTimeout $idleTimeout\n    }\n    if (![string]::IsNullOrEmpty($periodicRecycleTimes)) {\n        Update-IISAppPool-ScheduledTimes               -appPool $appPool -appPoolName $appPool.Name -Schedule $periodicRecycleTimes\n    }\n    if(![string]::IsNullOrEmpty($recycleEventsToLog)){\n        Update-IISAppPool-RecycleEventsToLog           -appPool $appPool -appPoolName $appPool.Name -Events $recycleEventsToLog    \n    }\n}\n\nRun\n",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.RunOnServer": "false",
    "Octopus.Action.Script.ScriptFileName": null,
    "Octopus.Action.Package.FeedId": null,
    "Octopus.Action.Package.PackageId": null
  },
  "Category": "IIS",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/iis-apppool-update-recycle-settings.json",
  "Website": "/step-templates/5d771fd0-710c-41a7-9969-10bc75d00307",
  "Logo": "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",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Wednesday, July 5, 2017