View a markdown version of this page

선택적으로 쿼리당 수준에서 제한 시간 설정 - Amazon Neptune

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

선택적으로 쿼리당 수준에서 제한 시간 설정

Neptune은 파라미터 그룹 옵션 neptune_query_timeout을 사용하여 쿼리에 대한 제한 시간을 설정하는 기능을 제공합니다(파라미터 참조). 다음과 같은 코드를 사용하여 글로벌 제한 시간을 재정의할 수도 있습니다.

참고

쿼리 제한 시간 설정은 쿼리 평가에만 적용됩니다. tx().commit() 및와 같은 바이트 기반 트랜잭션 제어 작업tx().rollback()에는 쿼리 제한 시간이 적용되지 않습니다. 자세한 내용은 바이트코드 커밋 및 롤백에 대한 제한 시간 동작 단원을 참조하십시오.

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은 쿼리를 종료합니다. 시간 초과 쿼리를 재시도할지 여부는 장애의 특성과 워크로드에 따라 달라집니다. 자세한 지침은 예외 처리 및 재시도을 참조하세요.

참고

특히 서버리스 인스턴스에서 쿼리 제한 시간 값을 너무 높게 설정하면 예상치 못한 비용이 발생할 수 있습니다. 제한 시간을 적절하게 설정하지 않으면 쿼리가 예상보다 훨씬 오래 실행되어 예기치 못한 비용이 발생할 수 있습니다. 쿼리를 실행하는 동안 비용이 많이 드는 대규모 인스턴스 유형으로 스케일 업할 수 있는 서버리스 인스턴스의 경우 특히 그렇습니다.

예상 런타임을 수용하고 비정상적으로 길게 실행할 경우에만 제한 시간을 야기하도록 하는 쿼리 제한 시간 값을 사용하면 이런 종류의 예상치 못한 비용을 피할 수 있습니다.

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 파라미터 설명서를 참조하세요.