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