12.1 グラフ・サーバー(PGX)エンジンの構成パラメータ
起動時に単一のJSONファイルをインメモリー・グラフ・サーバー(PGX)に割り当てることで、グラフ・サーバー(PGX)エンジンおよびPGXランタイム・ライブラリを構成できます。
このファイルには、次の表に示すパラメータが含まれます。
構成ファイルを指定するには、インメモリー・グラフ・サーバー(PGX)への構成ファイルの指定を参照してください。
ノート:
-
パラメータ値の相対パスは常に、指定された構成ファイルの親ディレクトリを基準として解決されます。たとえば、構成ファイルが
/pgx/conf/pgx.conf
である場合、そのファイル内のファイル・パスgraph-configs/my-graph.bin.json
は/pgx/conf/graph-configs/my-graph.bin.json
に解決されます。 -
パラメータのデフォルト値は、広範囲のアルゴリズムにわたって最高のパフォーマンスを得るように最適化されています。作業負荷に応じて、様々な戦略、サイズおよびしきい値を試行してパフォーマンスをさらに向上させることができます。
表12-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エンジンへのグラフのロードを許可します。空の場合は、デフォルトの場合と同様に、リモートの場所は許可されません。配列で*を指定すると、すべてのリモートの場所が許可されます。現在サポートされているのは値*のみです。この設定の値に関係なく、事前ロードされたグラフは任意の場所からロードされていることに注意してください。
警告: このパラメータによってセキュリティが低下するため、必要な場合にのみ使用します。 |
[] |
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 |
|
integer |
多数の頂点に対して最適化されたデータ構造にDFS実装が切り替わる判断の基準となる頂点へのアクセス数。 |
4096 |
|
boolean |
trueの場合、PGX Webアプリケーションは、クライアントが送信したクロスサイト・リクエスト・フォージェリ(CSRF)のトークンCookieとリクエスト・パラメータが存在して一致することを検証します。これを行うのは、CSRF攻撃を回避するためです。 |
true |
|
boolean |
|
true |
|
boolean |
trueの場合、PGXは、JVMのシャットダウン時にPGXを自動的にシャットダウンするJVMシャットダウン・フックを追加します。注意: シャットダウン・フックを非アクティブにし、PGXを明示的にシャットダウンしない場合、一時ディレクトリの汚染につながる可能性があります。 |
true |
|
object |
エンタープライズ・スケジューラの構成パラメータ。 |
null |
|
object |
[enterprise_schedulerに該当します]エンタープライズ・スケジューラ固有の設定。 |
null |
|
boolean |
|
true |
file_locations |
オブジェクトの配列 |
authorization-configで使用できるファイルの場所。 | [] |
graph_algorithm_language |
enum[GM_LEGACY, GM, JAVA] |
使用するフロントエンド・コンパイラ。 | gm |
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 システム・プロパティを使用します。
|
null |
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 |
メモリー・クリーンアップ間隔(秒)。 |
600 |
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 |
レルムの構成パラメータ。 | 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 |
release_memory_threshold |
number |
使用されたメモリーのしきい値パーセンテージ(小数)。この値を超えると、エンジンは未使用のグラフを解放し始めます。例: 値が0.0の場合、参照カウントがゼロになると同時にグラフが解放されます。つまり、そのグラフをロードしたすべてのセッションが破棄され、タイムアウトします。値が1.0の場合、グラフは解放されず、メモリーに収まらないグラフが必要になると、エンジンはすぐにOutOfMemoryErrorsをスローします。値が0.7の場合、合計メモリー使用量が使用可能な合計メモリーの70%未満であるかぎり、その時点でこれらを使用しているセッションがない場合でも、すべてのグラフがメモリー内に保持されます。消費量が70%を超え、別のグラフをロードする必要がある場合、メモリー使用量が70%を再度下回るまで、使用されていないグラフは解放されます。 |
0.85 |
revisit_threshold |
integer |
キャッシュされるノードからの一致結果の最大数。 | 4096 |
scheduler |
enum[basic_scheduler, enterprise_scheduler, low_latency_scheduler] |
使用するスケジューラ。
|
enterprise_scheduler |
session_idle_timeout_secs |
integer |
アイドル・セッションのタイムアウト(秒)。ゼロ(0)は無限大またはタイムアウトなしを意味します |
0 |
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)が使用されます。 |
null |
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 |
エンタープライズ・スケジューラ・パラメータ
次のパラメータは、高度なスケジューラが使用されている場合にのみ該当します。(基本スケジューラを使用している場合は無視されます。)
-
analysis_task_config
分析タスクの構成。型: object。デフォルト:
prioritymediummax_threads<no-of-CPUs>weight<no-of-CPUs>
-
fast_analysis_task_config
高速分析タスクの構成。型: object。デフォルト:
priorityhighmax_threads<no-of-CPUs>weight1
-
maxnum_concurrent_io_tasks
同時タスクの最大数。型: integer。デフォルト: 3
-
num_io_threads_per_task
高速分析タスクの構成。型: object。デフォルト:
<no-of-cpus>
基本的なスケジューラ・パラメータ
次のパラメータは、基本スケジューラが使用されている場合にのみ該当します。(高度なスケジューラを使用している場合は無視されます。)
-
num_workers_analysis
分析タスクに使用するワーカー・スレッドの数。型: integer。デフォルト:
<no-of-CPUs>
-
num_workers_fast_track_analysis
ファスト・トラック分析タスクに使用するワーカー・スレッドの数。型: integer。デフォルト: 1
-
num_workers_io
I/Oタスク(ロード/リフレッシュ/ディスクからの読取り/ディスクへの書込み)に使用するワーカー・スレッドの数。ファイルベース・ローダーは常にシングル・スレッドであるため、この値による影響はありません。データベース・ローダーは、I/Oワーカーごとに新しい接続をオープンします。デフォルト:
<no-of-CPUs>
例12-1 インメモリー・グラフ・サーバー(PGX)の最小構成
次の例を使用すると、インメモリー・グラフ・サーバー(PGX)により、32のワーカーを含む分析スレッド・プールが初期化されます。(その他すべてのパラメータに対してデフォルト値が使用されます。)
{ "enterprise_scheduler_config": { "analysis_task_config": { "max_threads": 32 } } }
例12-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" }] }, .... ] }
- グラフ・サーバー(PGX)のランタイム・パラメータの構成
- インメモリー・グラフ・サーバー(PGX)への構成ファイルの指定
- グラフ・サーバー(PGX)によるメモリー消費
インメモリー・グラフ・サーバー(PGX)は、グラフとそのプロパティに関する分析を実行するために、グラフをメイン・メモリーにロードします。
親トピック: インメモリー・グラフ・サーバー(PGX)の構成