サービスのチューニングと構成

ArcGIS for Desktop は、さまざまなサービス プロパティのデフォルト値を自動的に設定することにより、サービスを簡単にすばやく公開できるようにします。ただし、サービスにアクセスするユーザ数が非常に多い場合は、配置環境に合わせてサービス プロパティをデフォルト値から適切に変更する必要があります。このトピックでは、サービスを最適に構成するためのプロパティと手法について簡単に説明します。

プールの設定

ArcGIS 10.1 for Server で公開されるすべてのサービスは、プールされます。つまり、サービスのインスタンスは、複数のアプリケーション セッション間で共有することができます。

プールされるサービスのインスタンスを使用するアプリケーションは、1 つのリクエスト(マップの描画、アドレスのジオコーディングなど)が完了するまで、そのインスタンスのみを使用します。リクエストが完了した後、アプリケーションはサービス インスタンスへの参照を解放し、それを利用可能なインスタンスのプールに直接戻します。

リサイクル

サービスのリサイクルにより、利用不能になったサービスを削除して、新しいサービスと置き換えることができます。また、使用されなくなったサービスが確保していたリソースも回収されます。

サービスは一般に、複数のアプリケーションとアプリケーションのユーザによって共有されます。サービスの再利用の過程で、サービスをアプリケーションで使用できなくなることがあります。たとえば、アプリケーションがサービスの状態を不正に変更したり、サービスへの参照を不正に保持したりして、他のアプリケーションのセッションで利用できない状態にすることがあるかもしれません。場合によっては、サービスが壊され、利用できなくなることもあります。リサイクルにより、サービスのプールを最新の状態に保ち、古くなったサービスや使用不能になったサービスを回収することができます。

リサイクルの過程で、サーバはサービス構成内の各インスタンスを削除してから再作成します。リサイクルは、サーバ上でバックグラウンド プロセスとして実行されます。画面上には、リサイクルが実行されていることを示すものは何も表示されませんが、リサイクルに関連するイベントはログ ファイルに記録されます。

リサイクルは、サービスの実行中のインスタンスが指定された最小数を超えているかどうかに関係なく、それらをすべて削除して再作成します。実行中のインスタンス数を指定された最小数に定期的に戻すには、サービスを停止して再開する必要があります。このプロセスを自動化するよい方法は、ArcGIS Server の管理 API を使用して、カスタムのコマンド ライン実行可能ファイルを実行する Python スクリプト、シェル スクリプト、Windows バッチ スクリプトのいずれかを作成することです。このカスタム実行可能ファイルは、コマンド ライン引数として、サーバ名、サービス名、サービス タイプ、サービスの開始または停止を示すフラグを受け取ります。

リサイクル イベントが発生する間隔は、リサイクル間隔と呼ばれています。デフォルトのリサイクル間隔は 24 時間ですが、[サービス エディタ] ダイアログ ボックスで変更することができます。また、最初にリサイクルする時刻を選択することもできます。最初のリサイクルが行われた後は、リサイクル間隔を経過するごとにリサイクルが開始されます。

サービスのリサイクルは、インスタンスを利用可能な状態に保ち、各サービスのインスタンスを新規作成することによるパフォーマンスへの影響を分散させるために、1 インスタンスずつ実行されます。リサイクルの順序は決まっていませんが、クライアントによって使用されているサービスのインスタンスは解放されるまでリサイクルされません。このようにして、サービスを利用するユーザの作業に支障を与えないようにリサイクルが実行されます。

リサイクル中に利用可能なサービスが不足した場合、リクエストはインスタンスが利用可能になるまで待機状態になります。その間に最大待機時間に達した場合は、通常と同じメッセージがログに記録されます。

サービスの元のデータを変更した場合、その変更はリサイクルの後に自動的に反映されます。たとえば、マップ サービスを実行していて、このサービスに関連付けられたマップ ドキュメントを変更した場合は、リサイクル後に変更内容が表示されます(変更内容を直ちに表示するには、サービスを手動で停止し、開始します)。

分離

サービスを作成する際には、利用可能にするインスタンスの最小数と最大数を指定します。これらのインスタンスは、プロセス内のコンテナ コンピュータで実行されます。分離レベルは、これらのインスタンスを別々のプロセスで実行するのか、プロセスを共有するのかを決定します。

高い分離レベルでは、各インスタンスが専用のプロセスで実行されます。何らかの原因でプロセスが異常終了したとしても、その影響を受けるのはそのプロセスで実行されているインスタンス 1 つです。

分離レベルの高いサービス
GIS サーバ上の専用プロセスで実行される分離レベルの高いサービス

これに対し、レベルを低分離性に設定すると、複数のサービス インスタンスが 1 つのプロセスを共有できるようになります。したがって、1 つのプロセスで、複数の同時リクエストを処理できます。これはよくマルチスレッディングと呼ばれます。

分離レベルの低いサービス

低い分離レベルでは、プロセスを共有できる同じサービス構成のインスタンスの数は、デフォルトで 8、最大で 24 です。[1 プロセスあたりのインスタンス数] の値は、[サービス エディタ] ダイアログ ボックスの [プロセス] タブで設定することができます。特定のサービスのインスタンスがこの数に達すると、サーバが次のインスタンス グループに対する追加プロセスを開始します。そして、インスタンスがその数に達するたびに、同じ操作が繰り返されます。インスタンスが作成されると実行中のプロセスのスペースが埋まり、インスタンスが削除されるとスペースが空きます。

低分離性の利点は、1 つのプロセスによってサポートされる同時インスタンスの数が増えることです。低分離性を使用すると、サーバ上でのメモリ消費を大幅に改善することができます。ただし、この改善にはリスクが伴います。プロセスが終了またはクラッシュした場合、そのプロセスを共有するインスタンスはすべて削除されます。

無効なデータ接続の有無の確認

サービス インスタンスがアイドル状態にあるとき、ソース データへの接続が正常に維持されているかを判断するのは、サーバ管理者にとって難しい場合があります。ArcGIS Server には、ArcSDE ジオデータベースへの無効な接続をチェックするための組み込み機能があります。これらのチェックによって、ArcSDE への接続が切断または中断された後にサービスが応答しなくなるのを回避することができます。

ArcCatalog または Manager のいずれかの [サービス エディタ] ダイアログ ボックスの [プロセス] タブを開いて、[使用されていないインスタンスのデータ接続を定期的にチェックして修復] のチェックボックスをオンにすることによって、データ接続の有効性のチェックを有効化することができます。また、サービス接続が自動的に有効性チェック(および必要に応じて修復)されるために、分単位での間隔も指定する必要があります。通常は、デフォルトの 30 分を指定するのが適切です。

これらのチェックを有効にすると、サービスが一定期間アイドル状態にあった後にファイアウォールが ArcSDE へのポートを閉じている場合にも役立ちます。この状況では、時間間隔の選択は、ファイアウォールのタイムアウト設定に左右されるかもしれません。

タイムアウト

使用可能な各種のサービス タイムアウト値を理解すると、サービスを継続して実行し、常に使用できるようにしておくのに役立ちます。これらの値は [サービス エディタ] ダイアログ ボックスの [プール] タブで選択できます。

クライアントは、サービスへの参照を取得すると、サービスをある期間にわたって使用してから解放します。クライアントがサービスへの参照を取得してから参照を解放するまでにかかる時間を「使用時間」と呼びます。クライアントがサービスへの参照をいつまでも保持することがないよう(つまり、サービスを適宜に解放するよう)、各サービスに最大使用時間を設定することができます。クライアントが最大使用時間を超えてサービスを保持していた場合、そのサービスは自動的に解放され、クライアントはサービスへの参照を失います。

詳細詳細:

新しいサービスを作成したときの最大使用時間のデフォルト値は 600 秒(10 分)です。ただし、ArcGIS Server の各サイトで提供される事前生成済みの PublishingTools サービスでは、最大使用時間が 3600 秒(60 分)に設定されています。これは、大量のデータをサーバにコピーする公開ジョブに対応するためです。

最大使用時間には、管理者の想定を超える量の作業にサービスが使用されるのを防ぐ効果もあります。たとえば、あるアプリケーションがジオデータベースのチェックアウトを実行するために使用するサービスには、最大使用時間として 10 分を設定するかもしれません。これに対し、アプリケーションがマップの描画にのみ使用するサービスには、最大使用時間として 1 分を設定するかもしれません。

サービスの最大数のインスタンスが使用中である場合、サービスをリクエストしているクライアントは、別のクライアントがサービスの 1 つを解放するまでキューに配置されます。クライアントがサービスをリクエストしてからサービスを取得するまでにかかる時間を「待機時間」と呼びます。各サービスには、最大待機時間を設定することができます。クライアントがサービスの最大待機時間よりも長く待機した場合、そのリクエストはタイムアウトします。

3 つめのタイムアウトは、最大実行時間です。サービスは使用されなくなった後も、別のクライアントがインスタンスを必要とするまで、サーバ上で実行し続けます。使用されていない実行中のインスタンスもサーバ上のメモリを消費します。実行中のサービスの数を最小限に抑え、このアイドル状態のタイムアウトを短くすると、メモリを節約することができます。このタイムアウト値はデフォルトで 1,800 秒(30 分)に設定されます。アイドル状態のタイムアウトを短くすることには、実行中のサービスがすべてタイムアウトした後、新しいインスタンスが作成されるまでクライアントが待機しなければならないという欠点があります。

サーバを起動した結果として、またはクライアントからサーバへのリクエストのレスポンスとして、GIS サーバでサービスが作成されるときに、サービスを初期化するためにかかる時間を「作成時間」と呼びます。GIS サーバは、サービスの開始に時間がかかりすぎていることの目安となる開始タイムアウトを管理し、そのタイムアウトを過ぎた時点で、サービスの作成を取り消します。

GIS サーバは、待機時間、使用時間、サーバ上で発生するその他のイベントに関する統計情報を、メモリ内およびログに記録します。サーバ管理者は、これらの統計情報に基づいて、サービスの待機時間が長すぎるかどうかを判断することができます。その場合は、そのサービスのインスタンスの最大数を増やす必要があるでしょう。

サービスで実行できるオペレーションの制限

Web サービスの使用方法を管理しやすくするために、サービスの種類ごとに許可されるオペレーションがあります。各操作は、グループとして有効または無効にできる一連のメソッドで構成されています。Web サービスのクライアントは、許可されているオペレーションのメソッドのみを呼び出すことができます。

たとえば、マッピング Web サービスのユーザにマップの描画を許可し、マップ レイヤのデータ ソースのクエリを許可したくないとしましょう。この場合は、「クエリ(Query)」オペレーションを無効にし、「マップ(Map)」オペレーションを有効にする必要があります。

ここで特にフィーチャ サービスを取り上げるのは、フィーチャ サービスが GIS データの Web ベースでの編集に使用されるからです。フィーチャ サービスには、編集機能の制限に使用できる 1 組の追加オペレーションがあります。[クエリ(Query)][作成(Create)][更新(Update)][削除(Delete)] です。これらのオペレーションは、ArcGIS for Desktop[サービス エディタ] ダイアログ ボックスの [フィーチャ アクセス] タブで有効または無効にすることができます。所有権ベースのアクセス制御を適用することにより、ユーザが自分で作成していないフィーチャは編集できないようにすることもできます。

次の各表は、さまざまなサービス タイプに対してオペレーションを許可したときに有効になるメソッドを示しています。

マップ サービスのオペレーション

マップ サービスにおいてデフォルトで許可されるオペレーションは、「マップ(Map)」、「クエリ(Query)」、「データ(Data)」です。

マップ(Map)

クエリ(Query)

データ(Data)

GetDocumentInfo

Identify

Find

GetLegendInfo

QueryFeatureCount

QueryData

GetMapCount

QueryFeatureCount2

QueryFeatureData

GetMapName

QueryFeatureIDs

QueryFeatureData2

GetDefaultMapName

QueryFeatureIDs2

QueryAttachmentInfos

GetServerInfo

QueryHyperlinks

QueryAttachmentInfos2

GetSupportedImageReturnType

QueryHTMLPopups

QueryAttachmentData

ExportMapImage

QueryHTMLPopups2

QueryAttachmentData2

IsFixedScaleMap

GetSQLSyntaxInfo

QueryRelatedRecords

ToMapPoints

QueryRelatedRecords2

FromMapPoints

QueryRasterValue

HasSingleFusedMapCache

QueryRasterValue2

GetTileCacheInfo

GetMapTile

HasLayerCache

GetLayerTile

GetVirtualCacheDirectory

GetCacheName

ComputeScale

ComputeDistance

ExportScaleBar

GetCacheDescriptionInfo

GetCacheControlInfo

GetCacheStorageInfo

GetDefaultLayerDrawingDescriptions

GetMapTableSubtypeInfos

GetMapTableSubtypeInfos2

GetServiceConfigurationInfo

ジオコード サービスのオペレーション

ジオコード サービスにおいてデフォルトで許可されるオペレーションは、「ジオコード(Geocode)」と「リバース ジオコード(Reverse Geocode)」です。

ジオコード(Geocode)

リバース ジオコード(Reverse Geocode)

GeocodeAddress

ReverseGeocode

GeocodeAddresses

StandardizeAddress

FindAddressCandidates

GetAddressFields

GetCandidateFields

GetIntersectionCandidateFields

GetStandardizedFields

GetStandardizedIntersectionFields

GetResultFields

GetDefaultInputFieldMapping

GetLocatorProperties

ジオデータ サービスのオペレーション

ジオデータ サービスにおいてデフォルトで許可されるオペレーションは、「クエリ(Query)」と「抽出(Extraction)」です。これらのオペレーションにより、データのクエリと抽出でサポートされているメソッドがすべて有効になります。「レプリケーション(Replication)」オペレーションでは、同期、データ変更、メッセージの承認、スキーマでサポートされているメソッドがすべて有効になります。

クエリ(Query)

抽出(Extraction)

レプリケーション(Replication)

Get_Versions

ExpandReplicaDatasets

CreateReplica

Get_DefaultWorkingVersion

ExtractData

ExportAcknowledgement

Get_DataElements

ExportReplicaDataChanges

Get_MaxRecordCount

ImportAcknowledgement

TableSearch

ImportReplicaDataChanges

GetNextResultPortion

ReExportReplicaDataChanges

Get_Replicas

UnregisterReplica

Get_WrappedWorkspaceType

ImportData

グローブ サービスのオペレーション

グローブ サービスにおいてデフォルトで許可されるオペレーションは、「グローブ(Globe)」、「アニメーション(Animation)」、「クエリ(Query)」です。マップ サービスとは異なり、「クエリ(Query)」オペレーションは Identify と Find の両方をカバーします。

グローブ(Globe)

アニメーション(Animation)

クエリ(Query)

Get_Version

Get_Animation

Identify

Get_LayerCount

Find

Get_LayerInfos

Get_LegendInfos

Get_Config

Get_MQT

Get_Configuration

Get_Tile

Get_Symbols

Get_Textures

Get_VirtualCacheDirectory

イメージ サービスのオペレーション

モザイク データセットをイメージ サービスとして公開すると、すべてのケーパビリティはデフォルトで有効になります。ラスタ データセット、コンパイル済みイメージ サービス定義、またはレイヤ ファイルのような、その他のいくつかのソースから公開した場合には、イメージ(Image)およびメタデータ(Metadata)のケーパビリティのみが適用され有効になります。

イメージ(Image)

カタログ(Catalog)

ダウンロード(Download)

メタデータ(Metadata)

ピクセル(Pixels)

ExportImage

Fields

Download

Metadata

GetNativePixelBlock

ExportMapImage

GetCatalogItemCount

GetFile

GetRasterMetadata

GetPixelBlock

GenerateServiceInfo

GetCatalogItemIDs

GetImage

GetCatalogItems

Identify

GetNativeRasterInfo

ServiceInfo

GetRasterInfo

Version

GetThumbnail

9/14/2013