アプリケーション プールのリサイクルの定期的な再起動設定 <periodicRestart>
概要
<periodicRestart>
要素には、アプリケーション プールがリサイクルされるタイミングを制御できる構成設定が含まれています。 インターネット インフォメーション サービス (IIS) 7 で、ある時間間隔 (分単位) または毎日の特定の時刻にアプリケーション プールをリサイクルするように指定できます。 また、アプリケーション プール内のワーカー プロセスで使用されている仮想メモリまたは物理メモリの量に基づいてリサイクルするように IIS を構成したり、ワーカー プロセスで特定の数の要求が処理された後にアプリケーション プールをリサイクルするように IIS を構成したりすることもできます。
互換性
バージョン | メモ |
---|---|
IIS 10.0 | <periodicRestart> 要素は、IIS 10.0 では変更されませんでした。 |
IIS 8.5 | <periodicRestart> 要素は、IIS 8.5 では変更されませんでした。 |
IIS 8.0 | <periodicRestart> 要素は IIS 8.0 では変更されませんでした。 |
IIS 7.5 | <periodicRestart> 要素は、IIS 7.5 では変更されませんでした。 |
IIS 7.0 | <periodicRestart> 要素が IIS 7.0 で導入されました。 |
IIS 6.0 | <periodicRestart> 要素は、IIS 6.0 の IIsApplicationPools メタベース プロパティの一部を置き換えます。 |
段取り
<applicationPools>
コレクションは、IIS 7 の既定のインストールに含まれています。
操作方法
アプリケーション プールの定期的なリサイクルをセットアップする方法
次のようにインターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 または Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8 または Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
Windows Server 2008 または Windows Server 2008 R2 を使用している場合:
- タスク バーで、[スタート] ボタンをクリックし、[管理ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows Vista または Windows 7 を使用している場合:
- タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
- [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ウィンドウでサーバー名を展開し、[アプリケーション プール] をクリックします。
[アプリケーション プール] ウィンドウで、編集するアプリケーション プールを選びます。
アプリケーション プールのリサイクル設定の編集ウィザードの [リサイクル条件] ページで、[一定間隔] セクションの少なくとも 1 つのオプションを選び、該当するテキスト ボックスに値を入力して、[次へ] をクリックします。
(省略可能) アプリケーション プールのリサイクル設定の編集ウィザードの [ログを記録するリサイクル イベント] ページで、構成可能なリサイクル イベントと、発生したときに IIS がイベント ログに送信するランタイム リサイクル イベントを選び、[終了] をクリックします。
構成
<periodicRestart>
要素は、ApplicationHost.config ファイルにサーバー レベルで構成できます。
属性
属性 | 説明 |
---|---|
memory |
省略可能な uint 属性。 ワーカー プロセスをリサイクルするまでにワーカー プロセスが使用できる仮想メモリの量 (キロバイト単位) を指定します。 既定値は 0 で、リサイクルは無効になります。 |
privateMemory |
省略可能な uint 属性。 ワーカー プロセスをリサイクルするまでにワーカー プロセスが使用できるプライベート メモリの量 (キロバイト単位) を指定します。 既定値は 0 で、リサイクルは無効になります。 |
requests |
省略可能な uint 属性。 ワーカー プロセスで特定の数の要求が処理した後にワーカー プロセスがリサイクルされるように指定します。 既定値は 0 で、リサイクルは無効になります。 |
time |
省略可能な timeSpan 属性。 指定した時間が経過した後にワーカー プロセスがリサイクルされるように指定します。 既定値は 29:00:00 (29 時間) です。 |
子要素
要素 | 説明 |
---|---|
schedule |
省略可能な要素です。 アプリケーション プールの定期的な再起動のスケジュールを指定します。 |
構成サンプル
次の構成サンプルは、アプリケーション プールの <add>
要素を使用して、Contoso という名前の新しいアプリケーション プールを作成します。 <recycling>
要素は、アプリケーション プールの再開のログを構成し、<periodicRestart>
要素はアプリケーション プールがいつ再開するかを構成し、<processModel>
要素はアプリケーション プール内のワーカー プロセスのシャットダウンと開始の shutdownTimeLimit 属性と startupTimeLimit 属性をそれぞれ 30 秒間に構成します。 これらの制限時間を超えると、IIS がワーカー プロセスを終了します。
<add name="Contoso">
<recycling logEventOnRecycle="Schedule">
<periodicRestart>
<schedule>
<clear />
<add value="03:00:00" />
</schedule>
</periodicRestart>
</recycling>
<processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>
サンプル コード
次のコード例は、Contoso という名前のアプリケーション プールを IIS 7 サーバーに追加し、次にアプリケーション プールを毎日午前 3 時にリサイクルするように設定します。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
次の構文も使用できます。
appcmd.exe add apppool /name:"Contoso"
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
Note
AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost
に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = @"Contoso";
ConfigurationElement recyclingElement = addElement.GetChildElement("recycling");
ConfigurationElement periodicRestartElement = recyclingElement.GetChildElement("periodicRestart");
ConfigurationElementCollection scheduleCollection = periodicRestartElement.GetCollection("schedule");
ConfigurationElement addElement1 = scheduleCollection.CreateElement("add");
addElement1["value"] = TimeSpan.Parse("03:00:00");
scheduleCollection.Add(addElement1);
applicationPoolsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
addElement("name") = "Contoso"
Dim recyclingElement As ConfigurationElement = addElement.GetChildElement("recycling")
Dim periodicRestartElement As ConfigurationElement = recyclingElement.GetChildElement("periodicRestart")
Dim scheduleCollection As ConfigurationElementCollection = periodicRestartElement.GetCollection("schedule")
Dim addElement1 As ConfigurationElement = scheduleCollection.CreateElement("add")
addElement1("value") = TimeSpan.Parse("03:00:00")
scheduleCollection.Add(addElement1)
applicationPoolsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
var recyclingElement = addElement.ChildElements.Item("recycling");
var periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart");
var scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection;
var addElement1 = scheduleCollection.CreateNewElement("add");
addElement1.Properties.Item("value").Value = "03:00:00";
scheduleCollection.AddElement(addElement1);
applicationPoolsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection
Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
Set recyclingElement = addElement.ChildElements.Item("recycling")
Set periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart")
Set scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection
Set addElement1 = scheduleCollection.CreateNewElement("add")
addElement1.Properties.Item("value").Value = "03:00:00"
scheduleCollection.AddElement(addElement1)
applicationPoolsCollection.AddElement(addElement)
adminManager.CommitChanges()