マップ イメージ レイヤーとイメージ レイヤーを使用して生成されたラスター タイルのキャッシュを生成する際、十分に理解しておく必要があるツールやプロセスがいくつかあります。
注意:
マップ サービスという用語はマップ イメージ レイヤーという用語と区別なく使用でき、イメージ サービスという用語はイメージ レイヤーという用語と区別なく使用できます。
キャッシュ ツールセット
キャッシュ マップ レイヤー、イメージ レイヤー、タイル レイヤーなどのサーバー サービス用のキャッシュ管理ツールは、ArcGIS Pro の [サーバー ツール] > [キャッシュ ツールセット] にあります。 詳細については、「キャッシュ ツールセットの概要」をご参照ください。
注意:
すべてのキャッシュ ツールを使用するには、公開者または管理者の認証情報が必要です。
キャッシュ用のサーバー リソース
ArcGIS Server でのキャッシュの生成と管理は、事前に設定されたキャッシュ コントローラーとキャッシュ ツール ジオプロセシング サービスでサポートされています。 これらのシステム サービスは、ArcGIS Server サイトの作成時にすぐに利用できます。 CachingTools サービスに使用できるインスタンスの数により、コンピューターがどれだけの能力をキャッシュ ジョブに割り当てられるかが決まります。また、システム フォルダーにあるキャッシュ コントローラー サービス インスタンスの数により、同時に実行できるジョブの数が決まります。
マップまたはイメージ サービスのインスタンス数を増やしても、タイルの作成速度には影響しません。 マップまたはイメージ サービスのインスタンスは、サービスに対するクエリおよび個別属性表示の操作を実行する際に使用され、キャッシュ コンテンツのレンダリングには使用されません。 マップやイメージ サービスのプールを構成することで、キャッシュ マップ サービスの共有インスタンスを活用し、サーバー リソースへの負荷を軽減できます。 詳細については、「サービス インスタンス設定の構成」をご参照ください。
CachingTools サービスのインスタンス数の選択
ArcGIS Server Manager を使用すると、キャッシュ ジョブで使用できるようにする CachingTools のジオプロセシング サービスの最大インスタンス数をいつでも調整できます。 最小値と最大値は、個々の GIS サーバーに適用されます。そのため、最大値を 3 に設定し、CachingTools サービスを実行する GIS サーバーが 4 つある場合、最大 12 の CachingTools のインスタンスを実行できるようになります。
この設定により、サイトから GIS サーバーを追加または削除することで、キャッシュに割り当てるリソース数を増減することができます。 キャッシュ ジョブが実行中でも GIS サーバーを追加でき、サーバーの追加が検出されると、作成されるタイルが割り当てられます。
CachingTools サービスのインスタンス数を適切に選択することが重要です。 許可するインスタンスの数が多すぎると、コンピューターの負荷が大きくなり効率が低下する可能性があります。 ただし少なすぎると、コンピューターの使用率が低下する場合があります。 状況に合った最適な値を見つけるには試行錯誤が必要です。 ただし、まずは最大値である n を許可することをおすすめします。n は、クラスター内の 1 台のコンピューターが搭載する CPU コアの数を表します。
キャッシュ ジョブのインスタンス数の選択
[マップ サービス キャッシュのタイルを管理 (Manage Map Server Cache Tiles)] などのツールを使用すると、ジョブで動作する CachingTools のインスタンスの数を選択できます。 利用可能な CachingTools のインスタンスを実行中のいくつかのジョブの間で分割することができます。 それらのインスタンスが他のジョブで使用されている場合、あるジョブでは、CachingTools の最大インスタンス数まで使用できない可能性があります。 キャッシュ ジョブが CachingTools のすべてのインスタンスを使用している場合、リクエストされた他のジョブは最初のジョブが完了するまでキューに配置されます。
たとえば、キャッシュを作成しようとしていて、サイトに 4 つの GIS サーバーがあるとします。 各サーバーは、最大で 5 つの CachingTools インスタンスを許可するように構成しています。 キャッシュ ジョブに割り当てることができるインスタンスの最大数は 20 です。 このサイトで同時に 2 つのキャッシュ ジョブを実行し、負荷を均等に分散する場合は、各ジョブに対して 10 のインスタンスを割り当てることができます。
柔軟な設定の許可
必要に応じて GIS サーバーを自動的に追加できるクラウド環境でサイトを構成している場合があります。 ジョブの実行が、固定された最大インスタンス数によって制限を受けるのは望ましくありません。 そうした場合には、値に -1 を入力することで、ジョブで実行できるインスタンス数の制限をなくすことができます。 サイトに追加される GIS サーバーの数に関係なく、利用可能な CachingTools のすべてのインスタンスがそのジョブに使用されます。
同時に実行可能なジョブ数の設定
多数の公開者がキャッシュを構築する要求を同時に開始すると、各ジョブに割り当てるインスタンス数を少なくしている場合でも、サーバーに負荷がかかりすぎる場合があります。 システム フォルダーにある CachingControllers サービスは、同時に実行できるジョブの数を決定します。
デフォルトでは、CachingControllers サービスに対するインスタンスの最大数は 3 です。これは、キャッシュ ジョブを一度に 3 つしか実行できないことを意味します。 4 つ目のキャッシュ ジョブの要求をサーバーが受信した場合、この要求は他のジョブが完了するまでキューに格納されます。 一度に 4 つのジョブの実行を許可する場合は、CachingControllers の最大インスタンス数を 4 に設定します。
ジオプロセシングによるキャッシュの作成と更新の自動化
変更される可能性が低いベースマップを使用している場合は、おそらくキャッシュを 1 回だけ作成することになるでしょう。 ArcGIS ジオプロセシング ツールを実行して、キャッシュを作成し、タイルをキャッシュに追加することができます。 これは、データが頻繁に変化しない場合にキャッシュを更新する適切な方法でもあります。
データが頻繁に変化する場合でも、キャッシュを使用できることがあります。 キャッシュ ツールは、キャッシュの更新をスクリプト化して、キャッシュの特定箇所だけを更新対象にできるように設計されています。 たとえば、次の操作を実行できます。
- 変更されている縮尺レベルのキャッシュだけを更新する。
- フィーチャクラスの境界線の範囲内に含まれるキャッシュ エリアのみを更新します。
- キャッシュの管理を自動化する。
キャッシュ プロセスを自動化するには、[サーバー ツール] ツールボックスの [キャッシュ] ツールセットに含まれるツールを使用するスクリプトを作成します。
マップまたはイメージ サービスのキャッシュを作成するには、通常は最初に [マップ サービス キャッシュの作成 (Create Map Server Cache)] ツールを使用して、キャッシュを初期化します。 続いて、[マップ サービス キャッシュのタイルを管理 (Manage Map Server Cache Tiles)] を実行して、タイルをキャッシュに追加します。
キャッシュのエクスポート、インポート、および削除に使用する多数のツールが用意されています。 利用可能なツールの概要については、「キャッシュ ツールセットの概要」をご参照ください。
スクリプトでのツールの使用
[カタログ] ウィンドウまたは [検索] ウィンドウからキャッシュ ツールを手動で開くこともできますが、ModelBuilder でモデルを作成するか、実行対象のツールを 1 つ以上含めたジオプロセシング スクリプトを記述するほうが効率的です。 そうすれば、スクリプトをスケジューリングして、自動的に実行することができます。
ジオプロセシング ツールのリファレンス トピックには、スクリプトでツールを使用する方法を示す完全な Python コードのサンプルが含まれています。 例として、「マップ サービス キャッシュのタイルを管理 (Manage Map Server Cache Tiles)」のヘルプをご参照ください。
Python が初めての場合は、以下のリソースが役立つでしょう。
- Python とは - ArcGIS ヘルプには、このトピックをはじめとした、Python スクリプトの概要が収録してあります。
- モデルのエクスポート - ModelBuilder で作成したモデルは、Python にエクスポートして、対応するスクリプトを表示することができます。
Linux でのスクリプトの実行
ArcGIS の Python モジュールを使用する arcpy スクリプトを実行する場合は、「ArcGIS Server へのカスタム Python パッケージの配置」の手順に従います。
スクリプトを定期的に実行するためのスケジュールの設定
スクリプトは、Python スクリプト ファイル (.py) として保存することができます。 スクリプトを実行するには、 でそのスクリプトをダブルクリックします。 これはテストに役立ちますが、ほとんどの場合は、スクリプトを定期的に自動実行するようにスケジュールを設定してください。
オペレーティング システムには、スクリプトの実行といったタスクのスケジューリングに役立つユーティリティーが含まれています。 スクリプト ファイルの場所、実行する頻度、タスクを実行するための名前とパスワードを指定する必要があります。 詳細については、「Python スクリプトを指定の時間に実行するようスケジュールを設定する」をご参照ください。
キャッシュ処理がクラッシュした場合
ArcGIS Pro などのクライアントにより送信されたキャッシュ生成作業は、ジョブをバンドル範囲に分割してキャッシュ ツール (ワーカー) ジオプロセシング サービスに送信するキャッシュ コントローラー ジオプロセシング サービスに送信されます。 その後、キャッシュ ツール ジオプロセシング サービスはマップ サービスまたはイメージ サービスをレンダリングして、そのタイルを生成します。 このプロセスは、ジョブが成功または失敗とマークされる前にクラッシュする場合があります。 このような場合に、キャッシュ コントローラーは処理が完了するまで待機する可能性があります。
キャッシュ コントローラー ジオプロセシング サービスの maxTimeForWorkerJob プロパティは、ジョブがキャンセルとしてマークされるまでキャッシュ コントロール ジオプロセシング サービスが待つ最大時間を管理します。 管理者は maxTimeForWorkerJob の値を更新して、指定したレベルにおけるバンドル範囲の平均時間よりも大きくすることができます。
たとえば、レベル 19 でバンドル範囲のキャッシュの作成に平均 10 分かかる場合、maxTimeForWorkerJob の値を 20 分で設定することをおすすめします。 maxTimeForWorkerJob のデフォルト値は 300 分です。