IIS アプリケーションプールのリサイクルは どのような運用が推奨されますか?

:grey_question: Question

OrchestratorのIIS アプリケーションプールのリサイクルはどのような運用が推奨されますか?

:bulb: Answer

リサイクルのタイミング

デフォルト値(1740分=29時間)ではリサイクルが行われる時間が固定されていないために、Orchestratorへのリクエストとリサイクルのタイミングが重なった結果、リクエストのタイムアウトやトリガーでのジョブの起動が行われないなどの問題が生じることがあります。
リサイクルのタイミングについてはサービスピークの時間帯を避け、トリガーでのジョブ実行、RobotやWebブラウザ等クライアントからOrchestratorへのリクエストが少ない時間帯を設定することを推奨します。
例えば毎朝 3時などジョブの実行がない時間があれば、その時間帯にリサイクルが行われるように設定することを推奨します。

リサイクル頻度の推奨値

アプリケーションプールリサイクルはメモリリークに対処することが目的ですが、メモリリークの発生する可能性は非常に限られており、またワークロードが環境ごとに異なるため推奨値はありません。

リサイクルが始まると、既存のIISワーカープロセスは新規リクエストの受付を停止し、既存リクエストの処理を継続します。
既存のIISワーカープロセスはしばらくすると停止するため、その時点で未処理の既存リクエストがあれば失敗します。
新規に作成されたIISワーカープロセスが新規リクエストの受付を開始しますが、起動に多少の時間がかかるためリクエストがタイムアウトすることがあります。
定期的なリサイクルの代わりに、消費メモリが一定の閾値を超えた時にリサイクルするよう設定することもできます。

各アプリケーションプール(Orchestrator、Identity、Webhooks)についての考慮点

各アプリケーションプール(Orchestrator、Identity、Webhooks)のリサイクルのタイミングについて、同じインスタンスのものは同じタイミングで問題ありません。

Orchestratorが冗長構成の際の考慮点

全てのAPサーバーが同じタイミングでリサイクルを実行すると上記の新規IISワーカープロセスの起動が同じタイミングで発生し、結果として起動が完了するまで全てのリクエストがタイムアウトする可能性があります。
これを避けるため、少なくとも10分ほどはAPサーバ間でリサイクル時間をずらすことを推奨します。

2 Likes