サイトが一定期間アイドル状態になった後にサイトが自動でリサイクルされる


解説

SitecoreのUrlAgentは、サイトをウォームアップ状態に保つのに役立ちますが、デフォルトではこれが正しく機能しない可能性があります。追加の構成を実施しない場合、サイトが一定期間アイドル状態になった後、サイトが自動的にリサイクルされる可能性があります。

デフォルトのIIS構成では、定義された非アクティブ期間(デフォルトでは20分)中にWebサイトによってWebリクエストが処理されなかった場合、ASP.NETがWebサイトのアプリケーション プールをリサイクルします。

Sitecore CMSには、このような条件下でワーカー プロセスが自動的にリサイクルされないように設計されたキープアライブUrlAgentが含まれています。 これにより、サイトをウォームアップ状態に保ち、一定期間非アクティブになった後の最初のリクエストの処理速度を上げることができます。

以下の解決策では、Sitecore CMSを構成して、サイトがウォームアップ状態を維持し、一定期間非アクティブになった後に自動的にリサイクルされないようにする方法について説明します。

解決策 1

UrlAgentを使用して、サイトを存続させます。

  1. サイトのホスト名を「url」パラメータに追加します:
    <agent type="Sitecore.Tasks.UrlAgent" method="Run" interval="00:01:00">
             <param desc="url">http://<hostname_here>/sitecore/service/keepalive.aspx</param>
            …
    </agent>
    この手順は、Sitecoreログ ファイルで次のエラーが見つかった場合にのみ必要です。 IISを統合モードで実行していて、Sitecore Webサイトがホスト名として「localhost」を使用するリクエストを処理するように構成されていない場合、エラーが発生する可能性があります:
    INFO  Scheduling.UrlAgent started. Url:http://127.0.0.1/sitecore/service/keepalive.aspx
    ERROR Exception in UrlAgent(url: /sitecore/service/keepalive.aspx)
    Exception: System.Net.WebException
    Message: The remote server returned an error: (404) NotFound.
    Source: System
       at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
       at System.Net.WebClient.DownloadData(Uri address)
       at Sitecore.Web.WebUtil.ExecuteWebPage(String url, NameValueCollection headers)
       at Sitecore.Tasks.UrlAgent.Run()

    ※註:別の種類のエラー メッセージの例外が発生した場合は、次の記事を参照ください:
    UrlAgentの誤った構成を解決する

  2. interval属性を、アプリケーション プールの「アイドル タイムアウト」プロパティよりも小さい値(例えば、15分)に設定します。
    <agent type="Sitecore.Tasks.UrlAgent" method="Run" interval="00:15:00">

解決策 2

IISにサイトを自動的にリサイクルさせず、UrlAgentも使用させないようにするには、以下の方法を実施します:

  1. web.configの次の行をコメント アウトします:

    <agent type="Sitecore.Tasks.UrlAgent" method="Run" interval="00:01:00">
    <param desc="url">/sitecore/service/keepalive.aspx</param>
      <LogActivity>true</LogActivity>
    </agent>

  2. IIS 6の場合、アプリケーション プールのプロパティの「パフォーマンス」タブにある「アイドル状態の後にワーカー プロセスをシャットダウンする」チェックボックスをオフにします。
    IIS 7以降の場合、アプリケーション プール構成の「詳細設定」ダイアログで「アイドル タイムアウト」プロパティを0に設定します。