

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

# クエリごとのレベルでタイムアウトを設定する (オプション)
<a name="best-practices-gremlin-java-per-query-timeout"></a>

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

**注記**  
クエリタイムアウト設定は、クエリ評価にのみ適用されます。`tx().commit()` や などのバイトコードベースのトランザクション制御オペレーション`tx().rollback()`は、クエリタイムアウトの対象ではありません。詳細については、「[バイトコードコミットとロールバックのタイムアウト動作](access-graph-gremlin-transactions.md#access-graph-gremlin-transactions-commit-rollback-timeout)」を参照してください。

```
  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 はクエリを終了します。タイムアウトしたクエリを再試行するかどうかは、障害の性質とワークロードによって異なります。ガイダンスについては、「[例外処理と再試行](transactions-exceptions.md)」を参照してください。

**注記**  
特にサーバーレスインスタンスでは、クエリのタイムアウト値を高く設定しすぎると、予期しないコストが発生する可能性があります。妥当なタイムアウト設定がないと、クエリは予想よりもずっと長く実行され続け、予想もしなかったコストが発生する可能性があります。これは、クエリの実行中に大規模で高価なインスタンスタイプにスケールアップする可能性があるサーバーレスインスタンスに特に当てはまります。  
予想される実行時間に対応し、異常に長い実行でもタイムアウトが発生するだけのクエリタイムアウト値を使用することで、このような予期しない出費を回避できます。  
 Neptune エンジンバージョン 1.3.2.0 以降、Neptune は新しい neptune\$1lab\$1mode パラメータとして `StrictTimeoutValidation` をサポートしています。このパラメータの値が `Enabled` である場合、リクエストオプションまたはクエリヒントとして指定されたクエリごとのタイムアウト値は、パラメータグループでグローバルに設定された値を超えることはできません。このような場合、Neptune は `InvalidParameterException` をスローします。  
 この設定は、値が の場合、「/status」エンドポイントのレスポンスで確認できます`Disabled`。エンジンバージョン では`1.3.2.0`、このパラメータのデフォルト値は です`Disabled`。エンジンバージョン 以降`1.4.0.0`、 `Enabled` `StrictTimeoutValidation`パラメータはデフォルトで です。  
 複数のタイムアウト設定が設定されている場合にタイムアウトの優先順位を決定する方法の詳細については、[neptune\$1query\$1timeout](parameters.md#parameters-db-cluster-parameters-neptune_query_timeout) パラメータのドキュメントを参照してください。