アプリケーション プールのリサイクルのための定期的な再起動の設定 <periodicRestart>
- 概要
- 互換性
- セットアップ
- 方法
- 構成
- サンプル コード
※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。
概要
<periodicRestart>
要素に含まれる構成設定を使用すると、アプリケーション プールのリサイクルのタイミングを制御できます。インターネット インフォメーション サービス (IIS) 7.0 で、時間間隔ごとに (分単位)、または毎日特定の時間にアプリケーション プールをリサイクルするように指定できます。また、アプリケーション プール内のワーカー プロセスが使用する仮想メモリまたは物理メモリの量に基づいてリサイクルを実行するように IIS を構成したり、またはワーカー プロセスが特定数の要求を処理した後にアプリケーション プールをリサイクルするように構成したりできます。
互換性
IIS 7.0 | IIS 6.0 | |
---|---|---|
注意 | <periodicRestart> は IIS 7.0 で新たに導入された要素です。 |
|
セットアップ
<applicationPools>
コレクションは、IIS 7.0 の既定のインストールに含まれています。
方法
アプリケーション プールで定期的なリサイクルをセットアップする方法
タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
[接続] ウィンドウで、当該サーバー名を展開し、[アプリケーション プール] をクリックします。
[アプリケーション プール] ウィンドウで、編集するアプリケーション プールを選択します。
[操作] ウィンドウで [リサイクルの設定] をクリックします。
アプリケーション プールのリサイクル設定の編集ウィザードの [リサイクル条件] ページで、[一定間隔] セクションのオプションから少なくとも 1 つを選択し、該当するテキスト ボックスに値を入力して、[次へ] をクリックします。
(オプション) アプリケーション プールのリサイクル設定の編集ウィザードの [ログを記録するリサイクル イベント] ページで、発生時に IIS によってイベント ログに送信するように設定する、構成可能なリサイクル イベントおよびランタイム リサイクル イベントを選択し、[完了] をクリックします。
注 : 既定では、IIS は [定期的な間隔]、[仮想メモリ使用量]、および [プライベート メモリ使用量] の構成可能なリサイクル イベントをイベント ログに送信します。[リサイクル条件] ページでイベントのログ記録を有効にしている場合にのみ、その他の構成可能なリサイクル イベントをログに記録できます。
構成
<periodicRestart>
要素は、ApplicationHost.config ファイル内で、サーバー レベルで構成できます。
属性
属性 | 説明 |
---|---|
memory |
オプションの unit 属性。 ワーカー プロセスがリサイクルされる前にワーカー プロセスで使用できる仮想メモリの量 (キロバイト単位) を指定します。このプロパティでサポートされる最大値は、4,294,967 KB です。 既定値は 0 で、属性は無効になります。 |
privateMemory |
オプションの unit 属性。 ワーカー プロセスがリサイクルされる前にワーカー プロセスで使用できるプライベート メモリの量 (キロバイト単位) を指定します。このプロパティでサポートされる最大値は、4,294,967 KB です。 既定値は 0 で、属性は無効になります。 |
requests |
オプションの unit 属性。 ワーカー プロセスで特定数の要求を処理した後にワーカー プロセスがリサイクルされるように指定します。 既定値は 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.0 サーバーに追加し、次にアプリケーション プールで毎日午前 3:00 にリサイクルを実行するように設定します。
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
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()