Web ツールのパフォーマンスのヒント

クライアントはツールをできるだけ高速に実行することを期待しているため、Web ツールは高速かつ効率的である必要があります。 ArcGIS Server は一度に複数のクライアントに対処できるため、効率の悪いサービスによってサーバーが過負荷状態になる可能性があります。 サービスの効率がよいほど、同じコンピューター リソースを使って対処できるクライアントの数が増えます。

次に、サービスのパフォーマンスを向上させるためのヒントと手法を示します。 ここでは、これらの手法をパフォーマンスの向上率が高いものから順に示します。 最後に示すいくつかのヒントは実行時間を何秒か短縮することができます。一部のシナリオでは、それが重要になるかもしれません。

プロジェクト データでのレイヤーの使用

Web ツールとして共有する前にツールを実行する場合は、ディスク上のデータセットへのパスではなく、レイヤーを入力として使用してツールを実行します。 レイヤーはディスク上のデータセットを参照し、データセットに関するプロパティをキャッシュします。 これは特に、ネットワーク データセット レイヤーおよびラスター レイヤーの場合に当てはまります。 データセットへのパスの代わりにレイヤーを使用すると、パフォーマンス上の利点があります。これは、サービスが、開始時にデータセットからレイヤーを作成し、データセットの基本プロパティをキャッシュし、データセットを開いたままにするためです。 サービスを実行すると、データセットのプロパティが即座に使用可能になり、データセットが開いて動作可能になって、パフォーマンスが向上します。

たとえば、Esri SampleServer の可視領域サービスや ArcGIS Network Analyst エクステンション のレイヤーを使用した走行時間ポリゴンの作成です。 データセットのサイズに応じて、サービス実行時間を 1 回あたり 1 〜 2 秒以上短縮できます。

ArcGIS Server のローカル データの使用

Web ツールで必要なプロジェクト データは、ArcGIS Server に対してローカルである必要があります。 ネットワーク共有 (UNC) を介して共有され、アクセスされるデータは、同じコンピューター上で使用可能な場合に比べて低速です。 パフォーマンスを示す数字はさまざまですが、LAN 経由でデータを読み書きすると、ローカル ディスクの場合に比べて 2 倍の時間がかかることがよくあります。

中間データのメモリへの書き込み

in_memory ワークスペースに中間 (テンポラリ) データを書き出します。 データをメモリに書き込むほうが、ディスクに書き込むよりも高速です。

注意:

また、出力をマップ イメージ レイヤーとして表示するオプションを設定しなければ、出力データをメモリに書き込むこともできます。

データのメモリへの書き込みの詳細

タスクが使用するデータの事前処理

ほとんどの Web ツールは、Web クライアントによって送信された特定の空間検索に対する答えを提供するためのワークフローとして設計されています。 これらのワークフローは既知のデータに対する特定の操作であることが多いため、通常は、データを前処理することで、操作を最適化できます。 たとえば、属性インデックスまたは空間インデックスの追加は、空間または属性の選択操作を最適化する簡単な前処理です。 次のような例もあります。

  • ジオプロセシング サービスの例: 集水域ラスターの作成 (Watershed)」のチュートリアルでは、累積流量および方向ラスターを作成することにより、水文データを前処理します。
  • [最近接 (Near)] ツールまたは [近接情報テーブルの生成 (Generate Near Table)] ツールを使用して、既知の場所からの距離を事前に計算できます。 たとえば、サービスでクライアントが、ロサンゼルス リバーからユーザー定義の距離にある空の土地区画を選択できるとします。 [空間検索 (Select Layer By Location)] ツールを使用してこの選択を実行することもできますが、それよりも、ロサンゼルス リバーからのすべての土地区画の距離を ([最近接 (Near)] ツールを使用して) 事前に計算し、その計算済みの距離を土地区画の属性として保存した方が、非常に高速です。 [属性インデックスの追加 (Add Attribute Index)] ツールを使用して、この属性にインデックスを追加できます。 これにより、クライアントが検索するときに、タスクは効率の低い空間検索を使用するよりも簡単で高速な距離属性の選択を実行できます。

属性インデックスの追加

ツールが属性検索を使ってデータを選択する場合は、クエリで使用される属性ごとに属性インデックスを作成します。 [属性インデックスの追加 (Add Attribute Index)] ツールを使用できます。 インデックスは 1 回作成すればよく、モデルまたはスクリプトの外で作成できます。

空間インデックスの追加

モデルまたはスクリプトがシェープファイルで空間検索を行う場合は、[空間インデックスの追加 (Add Spatial Index)] ツールを使用してシェープファイルの空間インデックスを作成します。 ジオデータベース フィーチャクラスを使用する場合、空間インデックスは自動的に作成され、管理されます。 「空間インデックスの設定」で説明するように、空間インデックスを再計算するとパフォーマンスが向上することがあります。

非同期モードではなく同期モードの使用

Web ツールを同期、または非同期で実行するよう設定できます。 非同期で実行するとサーバーによるオーバーヘッドが発生します。つまり、非同期ツールが 1 秒以内に実行されることはめったにありません。 同じタスクを同期で実行すると、非同期実行した場合の 10 分の 1 の時間で済みます。

不要な座標変換の回避

Web ツールが、座標系が異なるデータセットを使用する場合、ツールによって、実行時にそれらの座標を 1 つの共通の座標系に変換する必要があることがあります。 データセットのサイズによっては、座標を 1 つの座標系から別の座標系に変換するときに、不要なオーバーヘッドが発生する場合があります。 データセットの座標系と、ツールが座標変換の実行を必要としているかどうかについて、知っておく必要があります。 ツールで使用されるすべてのデータセットを 1 つの座標系に変換することをお勧めします。

データ サイズの削減

データを処理するソフトウェアは、データセットが小さい場合に高速に動作します。 次に、地理データのサイズを削減できる方法をいくつかご紹介します。

  • [フィールドの削除 (Delete Field)] ツールを使用して、プロジェクト データの不要な属性を削除します。
  • ライン フィーチャとポリゴン フィーチャには、それらの形状を定義する頂点があります。 各頂点は X、Y 座標です。 フィーチャに必要以上の頂点が含まれていて、データセットのサイズを意味もなく増加させていることがあります。
    • データを外部ソースから取得した場合、非常に近接しているためにフィーチャの定義に寄与しない重複した頂点が含まれる場合があります。
    • 頂点の数は解析の縮尺と一致しません。 たとえば、大きい縮尺に適した詳細がフィーチャに含まれていて、解析または表示が小さい縮尺で行われることがあります。
    [ラインの単純化 (Simplify Line)][ポリゴンの単純化 (Simplify Polygon)][頂点の間引き (Generalize)] ツールを使用し、データから余分な頂点を取り除き、希望の詳細レベルを得ることもできます。