

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 선택적으로 쿼리당 수준에서 제한 시간 설정
<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\_lab\_mode 파라미터인 `StrictTimeoutValidation`을 지원합니다. 이 파라미터의 값이 `Enabled`인 경우 요청 옵션 또는 쿼리 힌트로 지정된 쿼리당 제한 시간 값은 파라미터 그룹에서 전역적으로 설정된 값을 초과할 수 없습니다. 이 경우 Neptune은 `InvalidParameterException`를 발생시킵니다.  
 값이 인 경우 '/status' 엔드포인트의 응답에서이 설정을 확인할 수 있습니다`Disabled`. 엔진 버전에서이 파라미터의 `1.3.2.0`기본값은 입니다`Disabled`. 엔진 버전 부터 `1.4.0.0` `StrictTimeoutValidation` 파라미터는 `Enabled` 기본적으로 입니다.  
 여러 제한 시간 설정이 구성된 경우 제한 시간 우선 순위가 결정되는 방법에 대한 자세한 내용은 [neptune\_query\_timeout](parameters.md#parameters-db-cluster-parameters-neptune_query_timeout) 파라미터 설명서를 참조하세요.