Dynamo 스토리지 백엔드를 사용하여 AWS에서 실행중인 gremlin 서버에 Java 응용 프로그램을 연결하려면 withRemote
을 사용하고 있습니다. 나는 몇 초 (~ 3.3 초) 후 연결 시간 제한을 얻고있다 : 나는 연결이 닫혀있는 경우 감지 의미 다시 연결하는 방법을 알아낼 필요가Gremlin 서버 with 리모콘 연결이 닫혔습니다 - 자동으로 다시 연결하는 방법?
org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.nio.channels.ClosedChannelException]]
. 나는 그것을 어떻게 감지 할 지 모르겠다. 그래프 탐색을 사용할 때 위의 예외가 발생합니다. 이전에 발견하고 다시 연결하는 방법이 있습니까? 또는 구성을 자동으로 다시 연결할 수있는 옵션이 있습니까 (예 :이 연결이 닫히기 전에 새 연결 만들기). 그래서 내 응용 프로그램이 항상 연결되어 있습니까? 이 문제가 이미 connection.keepAlive
configuration option 해결할처럼
this.graph = EmptyGraph.instance();
GryoMessageSerializerV1d0 gryoMessageSerializerV1d0 = new GryoMessageSerializerV1d0(
GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance()));
this.cluster = Cluster.build().serializer(gryoMessageSerializerV1d0)
.addContactPoint(configuration.getString("graphDb.host", "localhost"))
.port(configuration.getInt("graphDb.port", 8182)).create();
this.graphTraversalSource = this.graph.traversal().withRemote(DriverRemoteConnection.using(cluster));
내가 연결 손실이 발생하는 이유를 먼저 파악하려고합니다. 또한 문제는 DynamoDB 태그와 관련이 없으므로 DynamoDB 태그를 제거합니다. –
연결이 끊어지는 이유를 알았습니다. AWS로드 밸런서 TCP의 이상적인 시간 초과를 60 초로 설정했으며 대부분의 gremlin 호출은 gremlin 서버에서 아무 것도 반환하지 않고 데이터를 생성하므로 시간이 초과되었습니다. 그래도 gremlin 요청을하기 전에 연결이 여전히 활성화되어 있는지 확인하는 방법을 알아야하며, 활성화되어 있지 않으면 다시 연결해야합니다. – monali01