次の方法で共有


アプリケーション プールのリサイクルの定期的な再起動設定 <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 の既定のインストールに含まれています。

操作方法

アプリケーション プールの定期的なリサイクルをセットアップする方法

  1. 次のようにインターネット インフォメーション サービス (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) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウでサーバー名を展開し、[アプリケーション プール] をクリックします。

  3. [アプリケーション プール] ウィンドウで、編集するアプリケーション プールを選びます。

  4. [操作] ウィンドウで、[リサイクルの設定] をクリックします。
    [操作] ウィンドウのスクリーンショット。[アプリケーション プールの編集] で、[リサイクル] が強調表示されています。

  5. アプリケーション プールのリサイクル設定の編集ウィザードの [リサイクル条件] ページで、[一定間隔] セクションの少なくとも 1 つのオプションを選び、該当するテキスト ボックスに値を入力して、[次へ] をクリックします。
    [アプリケーション プールのリサイクル設定の編集] ページのスクリーンショット。[固定間隔] セクションは上部にあります。

  6. (省略可能) アプリケーション プールのリサイクル設定の編集ウィザードの [ログを記録するリサイクル イベント] ページで、構成可能なリサイクル イベントと、発生したときに 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()