クエリごとのレベルでタイムアウトを設定する (オプション) - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クエリごとのレベルでタイムアウトを設定する (オプション)

Neptune では、パラメータグループオプション neptune_query_timeout を使用して、クエリのタイムアウトを設定することができます (パラメータ 参照)。ただし、Java クライアントのバージョン 3.3.7 以降では、次のようなコードを使用して、グローバルタイムアウトを上書きすることもできます。

final Cluster cluster = Cluster.build("localhost") .port(8182) .maxInProcessPerConnection(32) .maxSimultaneousUsagePerConnection(32) .serializer(Serializers.GRAPHBINARY_V1D0) .create(); try { final GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); List<Object> verticesWithNamePumba = g.with(ARGS_EVAL_TIMEOUT, 500L).V().has("name", "pumba").out("friendOf").id().toList(); System.out.println(verticesWithNamePumba); } finally { cluster.close(); }

また、文字列ベースのクエリ送信の場合、コードは次のようになります。

RequestOptions options = RequestOptions.build().timeout(500).create(); List<Result> result = client.submit("g.V()", options).all().get();
注記

特にサーバーレスインスタンスでは、クエリのタイムアウト値を高く設定しすぎると、予期しないコストが発生する可能性があります。妥当なタイムアウト設定がないと、クエリは予想よりもずっと長く実行され続け、予想もしなかったコストが発生する可能性があります。これは、クエリの実行中に大規模で高価なインスタンスタイプにスケールアップする可能性があるサーバーレスインスタンスに特に当てはまります。

予想される実行時間に対応し、異常に長い実行でもタイムアウトが発生するだけのクエリタイムアウト値を使用することで、このような予期しない出費を回避できます。

Neptune エンジンバージョン 1.3.2.0 以降、Neptune は新しい neptune_lab_mode パラメータを としてサポートしていますStrictTimeoutValidation。このパラメータの値が の場合Enabled、リクエストオプションまたはクエリヒントとして指定されたクエリごとのタイムアウト値は、パラメータグループでグローバルに設定された値を超えることはできません。このような場合、Neptune は をスローしますInvalidParameterException

この設定は、値が の場合、「/status」エンドポイントに対するレスポンスで確認できます。1.3.2.0 Disabledでは、このパラメータのデフォルト値は ですDisabled