22.1 グラフ・サーバー(PGX)エンジンの構成パラメータ
グラフ・サーバー(PGX)エンジン・パラメータは、/etc/oracle/graph/pgx.conf JSONファイルで構成できます。
               
起動時に、グラフ・サーバー(PGX)はデフォルトで/etc/oracle/graph/pgx.confファイルの設定を選択します。
               
次の表に、グラフ・サーバー(PGX)の様々なランタイム構成オプションを示します。
グラフ・サーバー(PGX)エンジン・パラメータ
次の表に、グラフ・サーバー(PGX)エンジン・パラメータの説明を示します。
表22-1 グラフ・サーバー(PGX)エンジンのランタイム・パラメータ
| パラメータ | 型 | 説明 | デフォルト | 
|---|---|---|---|
| 
 | integer | 管理要求の結果がキャッシュから削除されるまでの秒数。完了していないリクエストまたはまだ消費されていないリクエストは、このタイムアウトから除外されます。ノート: これが関連するのは、PGXがWebアプリケーションとしてデプロイされている場合のみです。 | 60 | 
| 
 | boolean | trueの場合、セッションによってデフォルトのアイドル・タイムアウトが上書きされる可能性があります。 | true | 
| 
 | boolean | trueの場合、タスクの重み、タスク優先度、スレッド数などのスケジューリング情報のオーバーライドをすべてのユーザーに許可します | true | 
| 
 | boolean | trueの場合、セッションによってデフォルトのタスク・タイムアウトが上書きされる可能性があります。 | true | 
| 
 | boolean | trueの場合、ユーザーはロードするグラフの自動リフレッシュを有効化できます。falseの場合、 | false | 
| allowed_remote_loading_locations | 文字列の配列 | リモートの場所(http、https、ftp、ftps、s3、hdfs)からPGXエンジンへのグラフのロードを許可します。空の場合は、デフォルトの場合と同様に、リモートの場所は許可されません。配列で*を指定すると、すべてのリモートの場所が許可されます。現在サポートされているのは値*のみです。この設定の値に関係なく、事前ロードされたグラフは任意の場所からロードされていることに注意してください。このパラメータによってセキュリティが低下するため、必要な場合にのみ使用してください。 | [] | 
| authorization | オブジェクトの配列 | 認可のためのユーザーとロールのリソースおよび権限へのマッピング。 | [] | 
| authorization_session_create_allow_all | boolean | trueの場合、付与されている権限に関係なく、すべてのユーザーがPGXセッションを作成できます。 | false | 
| basic_scheduler_config | object | 分岐結合プールのバックエンドの構成パラメータ。 | null | 
| 
 | integer | BFS反復QUEフェーズのタスク・サイズ。 | 128 | 
| 
 | number | 親読取りベースのアクセス戦略に切り替えるBFS横断レベル・アイテムのしきい値。 | 0.05 | 
| 
 | integer | 読取りベースのアクセス戦略に切り替えるBFS横断レベル・アイテムのしきい値。 | 1024 | 
| 
 | integer | BFSのトラバース・レベル・アイテムの頂点がシングル・スレッドでアクセスされる回数。 | 128 | 
| 
 | string | PGX全体で使用する標準文字セット。デフォルトはUTF-8です。ノート: 一部の書式には互換性がない可能性があります。 | utf-8 | 
| 
 | integer | 共通の隣接イテレータ実装で使用されるデフォルトの差分係数値。 | 8 | 
| 
 | integer | 部分配列が小さいとみなされるしきい値を示すために、共通の隣接イテレータ実装で使用されるデフォルト値。 | 128 | 
| 
 | integer | バイナリ検索アプローチが適用される最小サイズを示すために、共通の隣接イテレータ実装で使用されるデフォルト値。 | 96 | 
| data_memory_limits | object | メモリー制限構成パラメータ。 | null | 
| 
 | integer | 多数の頂点に対して最適化されたデータ構造にDFS実装が切り替わる判断の基準となる頂点へのアクセス数。 | 4096 | 
| 
 | boolean | trueの場合、PGX Webアプリケーションは、クライアントが送信したクロスサイト・リクエスト・フォージェリ(CSRF)のトークンCookieとリクエスト・パラメータが存在して一致することを検証します。これを行うのは、CSRF攻撃を回避するためです。 | true | 
| 
 | boolean | 
 | true | 
| 
 | boolean | 
 | true | 
| 
 | boolean | ユーザーが公開済グラフに対する | true | 
| 
 | boolean | 
 | true | 
| 
 | boolean | 
 | true | 
| 
 | object | null | |
| 
 | object | [enterprise_schedulerに該当します]エンタープライズ・スケジューラ固有の設定。 | null | 
| 
 | boolean | 
 | true | 
| file_locations | オブジェクトの配列 | authorization-configで使用できるファイルの場所。 | [] | 
| graph_algorithm_language | enum[GM, JAVA] | 使用するフロントエンド・コンパイラ。 | JAVA | 
| graph_validation_level | enum[low, high] | 新しくロードまたは作成されたグラフで実行される検証のレベル。 | low | 
| ignore_incompatible_backend_operations | boolean | trueの場合、RTSまたはFJプールで互換性のない操作および構成値を検出した場合のみログに記録します。falseの場合、例外がスローされます。 | false | 
| in_place_update_consistency_model | enum[ALLLOW_INCONSISTENCIES, CANCEL_TASKS] | インプレース更新の発生時に使用される一貫性モデル。インプレース更新が有効な場合のみ該当します。現在、更新がインプレースで適用されるのは、更新が構造的でない場合のみです(プロパティを変更するのみ)。現在2つのモデルが実装されており、1つのモデルでは更新の発生時に新しいタスクのみを遅延させ、もう1つのモデルでは実行中のタスクも遅延させます。 | ALLOW_INCONSISTENCIES | 
| init_pgql_on_startup | boolean | trueの場合、PGQLはPGXの起動時に直接初期化されます。そうでない場合、PGQLの初回使用時に初期化されます。 | true | 
| interval_to_poll_max | integer | いったん達するとジョブ・ステータスのポーリング間隔が固定される指数関数的バックオフの上限(ミリ秒) | 1000 | 
| java_home_dir | string | Javaのホームディレクトリへのパス。 <system-java-home-dir>に設定した場合は、java.homeシステム・プロパティを使用します。 | <system-java-home-dir> | 
| large_array_threshold | integer | 配列のサイズが大きすぎて通常のJava配列を使用できなくなるときのしきい値。これは使用しているJVMによって異なります。( Integer.MAX_VALUE - 3にデフォルト設定されます) | 2147483644 | 
| max_active_sessions | integer | 1回にアクティブにできるセッションの最大数。 | 1024 | 
| max_distinct_strings_per_pool | integer | [string_pooling_strategyが索引付けられている場合のみ該当します]プーリングを停止するまでのプロパティごとの個別の文字列数。制限に達すると、例外がスローされます。 | 65536 | 
| max_http_client_request_size | long | REST APIを介してPGXサーバーに送信される httpリクエストの最大サイズ(バイト単位)。-1に設定すると、任意のサイズのリクエストが許可されます。 | 10485760 | 
| max_off_heap_size | integer | OutOfMemoryErrorがスローされるまでPGXが割り当てられるオフピーク・メモリーの最大容量(MB)。 端数処理および同期のトレードオフのため、この制限を超えないことは保証されていません。これは、PGXが新しいメモリー割当てリクエストを拒否し始める場合のみ、しきい値として機能します。 | <available-physical-memory> | 
| max_queue_size_per_session | integer | キューに入れることができるセッション当たりの保留中タスクの最大数。セッションが最大数に達した場合、そのセッションの新しい着信リクエストは拒否されます。負の値は無限大または無制限を意味します。 | -1 | 
| max_snapshot_count | integer | エンジンで同時にロードされる可能性のあるスナップショットの数。自動または強制更新により新規スナップショットを作成できます。グラフのスナップショットの数がこのしきい値に到達すると、自動更新はこれ以上実行されなくなり、強制更新の結果、1つ以上のスナップショットがメモリーから削除されるまでは例外になります。値ゼロは、無制限数のスナップショットをサポートすることを示します。 | 0 | 
| memory_allocator | enum[basic_allocator, enterprise_allocator] | 使用するメモリー・アロケータ。 | basic_allocator | 
| memory_cleanup_interval | integer | メモリー・クリーンアップ間隔(秒)。 | 5 | 
| min_array_compaction_threshold | number | グラフ構成で array_compaction_threshold値に使用できる最小値(更新用に最適化されたグラフにのみ関連)。グラフ構成でmin_array_compaction_thresholdで指定された値より小さい値を使用しようとすると、かわりにmin_array_compaction_thresholdが使用されます。 | 0.2 | 
| min_fetch_interval_sec | integer | デルタリフレッシュ(グラフ形式がデルタ更新をサポートしている場合のみ関連)の場合、グラフ・ソースに対して変更が問い合される最小間隔。グラフのデルタリフレッシュが頻繁に発生するためにPGXがハングしないように、この値をチューニングできます。 | 2 | 
| min_update_interval_sec | integer | 自動リフレッシュの場合、グラフ全体を再ロードするか、フォーマットがデルタ更新をサポートするかによって、新しいスナップショットが作成される間隔が最小で、キャッシュされている変更は(フォーマットでデルタ更新がサポートされている場合のみ関連)になります。グラフの自動リフレッシュが頻繁に発生するためにPGXがハングしないように、この値をチューニングできます。 | 2 | 
| ms_bfs_frontier_type_strategy | enum[auto_grow, short, int] | MS-BFSフロンティアに使用するタイプ方針。 | auto_grow | 
| num_spin_locks | integer | 生成された各アプリケーションがインスタンス化の際に作成するスピン・ロックの数。トレードオフ: 数値が小さくなると、メモリー消費量が少なくなり、数値が大きくなると、実行速度が速くなります(アルゴリズムがスピン・ロックを使用している場合)。 | 1024 | 
| parallelism | integer | スレッド・プールで使用されるワーカー・スレッド数。ノート: コール元のスレッドが別のスレッド・プールの一部である場合、この値は無視され、親プールの並列度が使用されます。 | <number-of-cpus> | 
| pattern_matching_supernode_cache_threshold | integer | スーパーノードになるノードの近隣の最小数。これは、パターン一致エンジン用です。 | 1000 | 
| pgx_realm | object | レルムの構成パラメータ。 表22-2を参照してください。 | null | 
| pgx_server_base_url | string | これは、グラフ・サーバーをロード・バランサの内側にデプロイして、21.3より前のクライアントに下位互換性を持たせる場合に使用されます。値は、ロード・バランサのアドレスに設定する必要があります。 | null | 
| pooling_factor | number | [string_pooling_strategyがon_heapの場合のみ該当します]この値は、文字列プールがプロパティのサイズと同じ大きさになることを阻止します。同じ大きさになると、プーリングの表示が無効になる可能性があります。 | 0.25 | 
| preload_graphs | オブジェクトの配列 | 起動時に登録されるグラフ構成のリスト。各アイテムには、グラフ構成へのパス、グラフの名前、およびグラフを公開するかどうかが含まれます。 | [] | 
| random_generator_strategy | enum[non_deterministic, deterministic] | PGXで乱数を生成する方法。 | non_deterministic | 
| random_seed | long | [決定論的乱数ジェネレータにのみ関連] pgxで使用される決定論的乱数ジェネレータのシード。デフォルトは-24466691093057031です。 | -24466691093057031 | 
| readiness_memory_usage_ratio | number | PGXサーバーの準備が整っているかどうかを検出するために考慮する必要があるメモリー制限率。これは | 1.0 | 
| release_memory_threshold | number | 使用されたメモリーのしきい値パーセンテージ(小数)。この値を超えると、エンジンは未使用のグラフを解放し始めます。例: 値が0.0の場合、参照カウントがゼロになると同時にグラフが解放されます。つまり、そのグラフをロードしたすべてのセッションが破棄され、タイムアウトします。値が1.0の場合、グラフは解放されず、メモリーに収まらないグラフが必要になると、エンジンはすぐにOutOfMemoryErrorsをスローします。値が0.7の場合、合計メモリー使用量が使用可能な合計メモリーの70%未満であるかぎり、その時点でこれらを使用しているセッションがない場合でも、すべてのグラフがメモリー内に保持されます。消費量が70%を超え、別のグラフをロードする必要がある場合、メモリー使用量が70%を再度下回るまで、使用されていないグラフは解放されます。 | 0.0 | 
| revisit_threshold | integer | キャッシュされるノードからの一致結果の最大数。 | 4096 | 
| running_memory_usage_ratio | number | PGXサーバーが実行中かどうかを検出するために考慮する必要があるメモリー制限率。これは | 1.0 | 
| scheduler | enum[basic_scheduler, enterprise_scheduler, low_latency_scheduler] | 使用するスケジューラ。 
 | enterprise_scheduler | 
| session_idle_timeout_secs | integer | アイドル・セッションのタイムアウト(秒)。ゼロ(0)は無限大またはタイムアウトなしを意味します。 | 14400 | 
| session_task_timeout_secs | integer | セッション(アルゴリズム、I/Oタスク)によって送信された長時間実行タスクの中断のタイムアウト(秒)。ゼロ(0)は無限大またはタイムアウトなしを意味します。 | 0 | 
| small_task_length | integer | 処理の合計量がデフォルトのタスクの長さより小さい場合のタスクの長さ(タスク・スティーリング戦略の場合のみ該当します)。 | 128 | 
| strict_mode | boolean | trueの場合、エンジンで構成の問題(無効なキー、不一致、その他の潜在的なエラーなど)が発生する場合は常に、例外がスローされ、ERRORレベルでログに記録されます。falseの場合、エンジンでは(重大度に応じて) ERROR/WARNレベルで問題が記録され、最適な推測を行われ、例外がスローされるのではなく、合理的なデフォルトが使用されます。 | true | 
| string_pooling_strategy | enum[indexed, on_heap, none] | 使用する文字列プール戦略。 | on_heap | 
| task_length | integer | デフォルトのタスクの長さ(タスク・スティーリング戦略の場合のみ該当します)。100から10000の範囲にする必要があります。トレードオフ: 小さい数値を指定すると、より詳細なタスクが生成され、スティーリング・スループットが高くなります。大きい値を指定すると、メモリー消費量およびGCアクティビティが減少します。 | 4096 | 
| tmp_dir | string | コンパイル・アーティファクトおよび他の一時データを格納するための一時ディレクトリ。<system-tmp-dir>に設定すると、基礎となるシステムの標準のtmpディレクトリ(Linuxでは/tmp)が使用されます。 | "/tmp" | 
| udf_config_directory | string | UDF構成ファイルを含むディレクトリ・パス。 | null | 
| use_index_for_reachability_queries | enum[auto, off] | 到達可能性問合せの索引を作成します。 | auto | 
| use_memory_mapper_for_reading_pgb | boolean | trueの場合、可能な場合はPGB形式でグラフを読み取るためにメモリーにマップされたファイルを使用します。falseの場合は、常にストリームベースの実装を使用します。 | true | 
| use_memory_mapper_for_storing_pgb | boolean | trueの場合、可能な場合はPGB形式でグラフを格納するためにメモリーにマップされたファイルを使用します。falseの場合は、常にストリームベースの実装を使用します。 | true | 
ランタイム構成フィールドのデフォルト値は、広範囲のアルゴリズムにわたって最高のパフォーマンスを得るように最適化されます。作業負荷に応じて、様々な戦略、サイズおよびしきい値を試行してパフォーマンスをさらに向上させることができます。
拡張アクセス構成
次の表では、ログイン動作のカスタマイズに使用できるpgx_realmオブジェクト内のフィールドを示します。
                  
表22-2 拡張アクセス構成のオプション
| パラメータ | 型 | 説明 | デフォルト | 
|---|---|---|---|
| token_expiration_seconds | integer | 生成されたベアラー・トークンが期限切れになるまでの秒数。 | 3600 (1時間) | 
| refresh_time_before_token_expiry_seconds | integer | トークンが期限切れになる前に自動的にリフレッシュされるまでの秒数。この値は常に token_expiration_seconds値よりも小さくする必要があります。 | 1800 | 
| connect_timeout_milliseconds | integer | 指定したJDBC URLへの接続試行がタイムアウトになり、ログイン試行が拒否されるまでの時間(ミリ秒)。 | 10000 | 
| max_pool_size | integer | 各ユーザーに許可される最大JDBC接続数。この数に達すると、現行ユーザーのデータベースからの読取り試行は失敗します。 | 64 | 
| max_num_users | integer | 許容するアクティブなサインイン済ユーザーの最大数。この数に達すると、グラフ・サーバーはログイン試行を拒否します。 | 512 | 
| max_num_token_refresh | integer | トークンを自動的にリフレッシュできる最大回数。この回数を超えると、ログインが再度要求されます。 | 24 | 
エンタープライズ・スケジューラ・パラメータ
次のパラメータは、高度なスケジューラが使用されている場合にのみ該当します。(基本スケジューラを使用している場合は無視されます。)
表22-3 エンタープライズ・スケジューラのパラメータ
| パラメータ | 型 | 説明 | デフォルト | 
|---|---|---|---|
| analysis_task_config | object | 分析タスクの構成 | |
| fast_analysis_task_config | object | 高速分析タスクの構成 | |
| max_num_concurrent_io_tasks | integer | 一度に同時実行できるI/Oタスクの最大数 | 3 | 
| num_io_threads_per_task | integer | タスクごとに使用するI/Oスレッドの数 | <no-of-cpus> | 
基本的なスケジューラ・パラメータ
次のパラメータは、基本スケジューラが使用されている場合にのみ該当します。(高度なスケジューラを使用している場合は無視されます。)
表22-4 基本スケジューラのパラメータ
| フィールド | 型 | 説明 | デフォルト | 
|---|---|---|---|
| num_workers_analysis | integer | 分析タスクに使用するワーカー・スレッドの数を指定します。 | <no-of-cpus> | 
| num_workers_fast_track_analysis | integer | ファスト・トラック分析タスクに使用するワーカー・スレッドの数を指定します。 | 1 | 
| num_workers_io | integer | I/Oタスク(ロード/リフレッシュ/ディスクからの書込み/ディスクへの書込み)に使用するワーカー・スレッドの数を指定します。ファイルベース・ローダーは常にシングル・スレッドであるため、この値による影響はありません。データベース・ローダーは、I/Oワーカーごとに新しい接続をオープンします。 | <no-of-cpus> | 
例22-1 グラフ・サーバー(PGX)の最小構成
次の例を使用すると、グラフ・サーバー(PGX)により、32のワーカーを含む分析スレッド・プールが初期化されます。(その他すべてのパラメータに対してデフォルト値が使用されます。)
{
  "enterprise_scheduler_config": {
    "analysis_task_config": {
      "max_threads": 32
    }
  }
}
例22-2 事前ロードされている2つのグラフ
この例では、より多くのフィールドを設定し、グラフ・サーバー(PGX)の起動中にメモリーにロードするための2つの固定グラフを指定します。
{ 
  "enterprise_scheduler_config": {
    "analysis_task_config": {
      "max_threads": 32
    },
    "fast_analysis_task_config": {
      "max_threads": 32
    }
  }, 
  "memory_cleanup_interval": 600,
  "max_active_sessions": 1, 
  "release_memory_threshold": 0.2, 
  "preload_graphs": [
    {
      "path": "graph-configs/my-graph.bin.json",
      "name": "my-graph"
    },
    {
      "path": "graph-configs/my-other-graph.adj.json",
      "name": "my-other-graph",
      "publish": false
    }
  ],
  "authorization": [{
    "pgx_role": "GRAPH_DEVELOPER",
    "pgx_permissions": [{
      "preloaded_graph": "my-graph",
      "grant": "read"
    },
    {
      "preloaded_graph": "my-other-graph",
      "grant": "read"
    }]
  },	
	....
  ]
}
パラメータ値の相対パスは常に、指定された構成ファイルの親ディレクトリを基準として解決されます。たとえば、前述のJSONが/pgx/conf/pgx.conf内にある場合、そのファイル内のファイル・パスgraph-configs/my-graph.bin.jsonは/pgx/conf/graph-configs/my-graph.bin.jsonに解決されます。
                  
親トピック: グラフ・サーバー(PGX)構成オプション