ArcGIS Server バージョン 10.7 以降、ArcGIS Pro から ArcGIS Server サイトに公開された互換性のあるマップ サービスごとに共有インスタンスまたは専有インスタンスを使用できるようになりました。10.7 より前のバージョンでは、現在は専有インスタンスと呼ばれているモデルがすべてのサービスに使用されていました。共有インスタンスを使用すると、複数のサービスで使用されるアクティブなサーバー プロセスをいくつかプールできるため、メモリ使用量が節約されます。これにより、リクエストを頻繁に処理していないサービスにメモリが使用されなくなります。
サーバー サイトが多数のサービスをホストしている場合は特に、リクエストをまれにしか受け取らないサービスに共有インスタンスを使用することをお勧めします。一方、専有インスタンスは、常にサービスで 1 つ以上のサーバー プロセスを使用してリクエストを処理できるようになるため、頻繁にリクエストを受け取るサービスや計算負荷の高いリクエストを受け取るサービスに使用することが最適です。
このトピックでは、サービス インスタンスおよびプロセスについて説明し、共有インスタンスと専有インスタンスのベスト プラクティスを紹介し、サービス インスタンス設定を構成する手順を示します。
サービス インスタンスの概要
ArcGIS Server サイト内のサービスをリクエストすると (マップの画面移動や住所への移動など)、サーバー コンピューター上で実行されている公開済みサービスのインスタンスでそのリクエストが処理されます。サービス インスタンスは、ArcSOC プロセスと呼ばれる Esri に所有権のあるサーバー プロセスを使用しています。各 ArcSOC プロセスの実行には、一定量のコンピューター メモリが必要となります。
ArcGIS Server サイトに多数のサービスがあり、サービスごとに 1 つ以上のサービス インスタンスが常に実行されていると、利用可能なコンピューター メモリが限界に達することがあります。また、組織でサービス インスタンスを実行する場合にはエネルギー コストがかかり、ArcGIS Server をクラウド インフラストラクチャに配置すると、実行する各サービス インスタンスに直接、金銭的コストがかかります。
このため、サイトで実行されているインスタンスの数を監視し、メモリ使用量によってパフォーマンスが抑止された場合に実行するインスタンスを制限することが ArcGIS Server 管理者の重要な役割になります。
ユーザーは、サービス (Web マップや Web アプリなど、サービス上に構築された製品を含む) を扱う際に迅速な結果を期待します。サービスが受け取る通信量を処理するには、適切な ArcSOC プロセスが必要となります。ただし、サービスに必要な数よりも多くのサーバー リソースをプロビジョニングすると、コンピューター メモリ、エネルギー、コストが無駄に消費されることになります。管理者にとっての適切な目標は、パフォーマンスを損なわずに、実行するサービス インスタンスの数をサービスに必要な数にまで削減することです。
ArcGIS Server のパフォーマンスを最適化するための有効な管理戦略の詳細については、「ユーザー数の予測と対処」をご参照ください。
サービス インスタンスの最小数と最大数
ArcGIS Server サイトに公開されたサービスごとに、実行する専有インスタンスの最小数と ArcGIS Server Manager を使用しているサービスに対して実行できるインスタンスの最大数を指定することができます。たとえば、このパラメーターを 3 つのインスタンスに設定すると、該当するサービスが使用されていない場合でも、常に ArcSOC プロセスで 3 つ以上のインスタンスが実行されます。
インスタンスの最小数をゼロに設定すると、該当するサービスが使用されていない場合に、そのサービスでインスタンスが実行されません。これにより、使用されていないサービスが停止するので、メモリ使用量が節約されますが、この方法には、ユーザーが次にそのサービスにリクエストを送信すると、レスポンスの遅延が発生するという欠点があります。このコールド スタートは、サービス リクエストを処理できるように ArcGIS Server でインスタンスが強化されている場合に発生し、リクエストを実行するユーザーに特によく見られます。
共有インスタンスと専有インスタンス
ArcGIS Server 10.7 で導入された共有インスタンス プールは、サイト内の各コンピューターで常に実行されています。ArcGIS Pro から公開されたマップ サービスは、共有インスタンス プールを使用するように構成できます。
ヒント:
どのアプリケーションからマップ サービスが公開されたかを特定するには、下記の「サービスのインスタンス タイプの構成」の手順 3 をご参照ください。
共有インスタンスを構成すると、このプールを使用しているサービスがリクエストを処理していない場合にリソース使用コストが発生しなくなるため、コールド スタートの欠点がなくなります。
次の制約によって、共有インスタンス プールを使用できるサービスが決まります。
- ArcGIS Pro から公開されたマップ サービスのみを、共有インスタンス プールを使用するように構成できます。それ以外のタイプのサービス (ジオプロセシング サービスなど) はサポートされていません。
- マップ サービスの特定の機能のみ (フィーチャ アクセス、WFS、WMS、および KML)、有効にすることができます。それ以外の機能はすべて、処理を進める前に無効にしておきます。
- カスタムのサーバー オブジェクト エクステンション (SOE) またはサーバー オブジェクト インターセプター (SOI) が設定されたサービスは共有インスタンスを使用できません。
- ArcMap から公開されたサービスは共有インスタンスを使用できません。
- ArcGIS Pro から公開されたキャッシュ マップ サービスのうち、上記の要件を満たしているものは共有インスタンスを使用できます。
共有インスタンスの導入に伴い、停止するまで特定のサービスしか実行しない専有インスタンスとの差別化が図られました。専有インスタンスは管理者にとってまだ有効なオプションであり、通信量の多いサービスで特に効果的です。これらのサービスに専有のサーバー リソースを提供して最適なパフォーマンスを確保し、通信量の多いサービスがプール内のどのプロセスも使用しないようにすることが専有インスタンスの目的となります。
備考:
ArcGIS Server を以前のバージョンから 10.7 にアップグレードすると、サービスの最小インスタンス設定は変わりませんが、ArcSOC プロセスのデフォルト プールが共有インスタンス用に確保されます。共有インスタンスを一部またはすべてのサービスを対象として構成する場合は、アップグレードの後で実行します。
各インスタンス タイプを使用するタイミング
インスタンス タイプは、どのマップ サービスにも最適なわけではありません。サーバー サイトの管理者として、サイトに公開されたサービスごとに使用するインスタンス プールを決定できます。
一部のサービスを対象として共有インスタンスを構成し、それ以外のサービスには専有の ArcSOC プロセスを指定することができます。一部のサービスが持続的にリクエストを受け取っており、それ以外のサービスの使用頻度が低いことが判明している場合に、このような分割構成を設定できます。どのサービスもまれにしかリクエストを受け取っていない場合は、メモリ使用量を節約するために、すべてのサービスを対象として共有インスタンスを構成することを検討してください。
ヒント:
使用パターンはよく変化するため、サイトを監視しながら、通信量とサーバーのパフォーマンスに基づいて、適切と判断するまでインスタンス タイプの設定を調整します。
共有インスタンス プールは、次のような互換性のあるマップ サービスに適しています。
- 使用頻度の低いサービス。これは配置によって異なりますが、ほとんどの配置では、平均で 1 分あたり 1 つ未満のサービス リクエスト数を意味します。
- すでに専有インスタンスの最小数がゼロに設定されているサービス。
- ほとんどのキャッシュ マップ サービス。
一方で、専有インスタンス プールは、次のようなサービスに最適なオプションとなっています。
- サービスレベル契約の下で契約したサービス。
- 使用頻度の高いサービス (ほぼ絶え間なく処理されるリクエストや計算負荷の高いリクエスト)。
- すでに専有インスタンスの最小数が大きい数値に設定されているサービス。
- 上記の共有インスタンス プールと互換性のないすべてのサービス。
デフォルトのサービス インスタンス設定の構成
管理者は、ArcGIS Pro から公開された互換性のあるマップ サービスに対してデフォルトのインスタンス タイプ設定を指定できます。このようなサービスをサーバーに公開すると、このサービスでデフォルトのインスタンス タイプが使用されます。この後、次のセクションに記載された手順を実行して、個々のサービスのインスタンス タイプを変更できます。
共有インスタンスをサービスのデフォルトのインスタンス タイプにすることを選択した場合、その設定は、互換性のあるマップ サービスにのみ適用されます。共有インスタンス プールを使用できないサービスでは、引き続き専有インスタンス プールが使用されます。
デフォルトのインスタンス タイプ設定を変更した場合、その変更は、それ以降に公開されるサービスにのみ反映されます。既存のサービスのインスタンス タイプ設定は変更されません。
備考:
共有インスタンス プールでは、リクエストを受信するサービスの数に基づいて、少量のメモリが消費されます。多数のサービスのリクエストを処理する共有インスタンス プールでは、リクエストを受信するサービス数が増加するのに伴って、徐々にメモリ量が増加します。1 つのリサイクル期間内で 50 以上のサービスがリクエストを受信すると、メモリ消費量の増加が停止します。
デフォルトのインスタンス タイプまたは共有インスタンス プール内のインスタンスの数を指定するには、次の手順を実行します。
- 管理者として ArcGIS Server Manager にサイン インします。URL の形式は、https://webadaptor.domain.com/arcgis/manager です。
- [サイト] > [設定] の順に参照します。これらの設定には、[プールの設定] ページからアクセスします。
- 互換性のあるマップ サービスのデフォルトのインスタンス タイプを変更するには、[デフォルトのインスタンス タイプ] の編集ボタンをクリックします。デフォルト設定にするインスタンス タイプを次の中から選択します。
- ほとんどのサービスで通信量が多いことが予想される場合やコンピューター メモリへの負荷が高いことを示すのに十分なサービスがサーバー サイトに存在しない場合は、[専有インスタンス] を選択します。
- まれにしかリクエストを受け取らないサービスを多数公開する場合や公開する追加サービスによってメモリ リソースが制限される懸念がある場合は、[共有インスタンス] を選択します。
- [適用] をクリックして、選択を確定します。
- 共有インスタンス プール内で実行されるサービス インスタンスの数を変更するには、[共有インスタンス設定] の編集ボタンをクリックします。
サイトで共有インスタンスを使用するサービスと専用インスタンスを使用するサービスが混在している場合は、ArcGIS Server サイトの個々のコンピューター上の CPU コア数と等しくなるように共有プールのインスタンス数を設定します (たとえば、4 コア コンピューターを使用している場合は、共有インスタンスの数を 4 に設定します)。すべてまたはほとんどのサービスが、共有インスタンス プールを使用するように構成されている場合は、インスタンス数をコア数の 2 倍に増やすことを検討してください (たとえば、4 コア コンピューターを使用している場合は、共有インスタンスの数を 8 に設定します)。
これらの推奨される設定は出発点にすぎません。設定後も、ArcGIS Server サイトを監視して、利用可能なリソースが最大限に活用され、サイトが通信量の増加で過負荷状態になっていないことを確認する必要があります。プール内のインスタンスの最適な数は、共有プールで提供される通信量、提供されているデータの量と種類、利用可能な計算リソースの数によって異なります。
- [適用] をクリックして、選択を確定します。
サービスのインスタンス タイプの構成
管理者は、個々のサービスを公開した後で、そのサービスのインスタンス タイプを指定することもできます。これによって、デフォルト設定が無効化されます。個々のサービスのインスタンス タイプを変更するには、次の手順を実行します。共有インスタンス プールを使用するには、マップ サービスが ArcGIS Pro から公開されており、上記の他の要件も満たしている必要があります。
- Web レイヤー (マップ イメージ レイヤーとして) または Web マップを ArcGIS Pro から ArcGIS Enterprise ポータルに共有します。フェデレートされた ArcGIS Server 上にマップ サービスが作成されます。
備考:
マップ サービスの特定の機能のみ (フィーチャ アクセス、WFS、WMS、および KML)、共有インスタンス プールを使用しているマップ サービス上で有効にすることができます。
- 管理者として ArcGIS Server Manager にサイン インします。URL の形式は、https://webadaptor.domain.com/arcgis/manager です。
- 該当するマップ サービスを検索してクリックします。
[編集] ページが表示されます。[一般] タブの [元のドキュメント] で、このマップ サービスが ArcGIS Pro から公開されていることが [アプリケーションの作成] プロパティに示されます。
- ページの左側にある [プールの設定] タブをクリックします。
このタブでは、サービスの専有インスタンスの範囲を指定し、サービス タイムアウト プロパティを設定し、専有インスタンスまたは共有インスタンスのどちらをサービスで使用するかを決定することができます。
- [共有されたインスタンス プール] オプションをクリックします。
- このオプションを選択すると、マップ サービスの一部の機能が ([機能] タブ上で) 使用できなくなります。[共有されたインスタンス プール] オプションを選択できない場合は、マップ サービスに対してサポート対象外の機能を有効にしていないかを確認します。手順 1 の注意をご参照ください。
- サービスに対して共有インスタンス プールを有効にすると、[インスタンス数の指定] セクション (専有インスタンス プールに使用される) が使用不可になります。
- 準備が完了したら、[保存して再起動] をクリックします。マップ サービスのインスタンス プール オプションを変更した場合は、そのサービスを再起動する必要があります。
いつでも、マップ サービスで使用されるインスタンス プールを変更できます。この操作は、サービス通信のパターンが変化した場合に実行してもかまいません。