기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
java.util.concurrent.TimeoutException
문제 해결
Gremlin Java 클라이언트는 연결 중 하나에 있는 슬롯을 사용할 수 있을 때까지 기다리는 동안 클라이언트 자체에서 Gremlin 요청 제한 시간이 java.util.concurrent.TimeoutException
초과되면 a를 발생시킵니다. WebSocket 이 제한 시간은 maxWaitForConnection
클라이언트측 구성 가능한 파라미터에 의해 제어됩니다.
참고
클라이언트에서 제한 시간이 초과된 요청은 서버로 전송되지 않으므로, 서버에서 캡처된 지표에는 반영되지 않습니다(예: GremlinRequestsPerSec
).
이러한 종류의 제한 시간은 일반적으로 2가지 경우에 발생합니다.
-
서버가 실제로 최대 용량에 도달. 이 경우 서버의 대기열이 꽉 차게 되는데, 메트릭을 모니터링하여 이를 감지할 수 있습니다. MainRequestQueuePendingRequests CloudWatch 서버에서 처리할 수 있는 병렬 쿼리의 수는 인스턴스 크기에 따라 달라집니다.
MainRequestQueuePendingRequests
지표에 서버의 보류 중인 요청이 누적되어 표시되지 않는 경우 서버는 더 많은 요청을 처리할 수 있으며, 클라이언트 측 제한으로 인해 제한 시간이 발생합니다. -
요청의 클라이언트 제한. 이 문제는 일반적으로 클라이언트 구성 설정을 변경하여 해결할 수 있습니다.
클라이언트가 보낼 수 있는 최대 병렬 요청 수를 대략적으로 추산할 수 있습니다.
maxParallelQueries = maxConnectionPoolSize * Max( maxSimultaneousUsagePerConnection, maxInProcessPerConnection )
클라이언트에
maxParallelQueries
이상을 전송하면java.util.concurrent.TimeoutException
예외가 발생합니다. 이 문제를 여러 가지 방법으로 해결할 수 있습니다.연결 제한 시간 증대. 애플리케이션에 지연 시간이 중요하지 않은 경우 클라이언트
maxWaitForConnection
설정을 늘립니다. 그러면 클라이언트가 제한 시간이 초과되기 전에 더 오래 기다리며, 이로 인해 지연 시간이 늘어날 수 있습니다.연결당 최대 요청 수 증대. 이렇게 하면 동일한 WebSocket 연결을 사용하여 더 많은 요청을 보낼 수 있습니다. 클라이언트의
maxSimultaneousUsagePerConnection
및maxInProcessPerConnection
설정을 늘려서 이 작업을 수행할 수 있습니다. 이러한 설정은 일반적으로 동일한 값을 가져야 합니다.연결 풀의 연결 수 증대. 클라이언트의
maxConnectionPoolSize
설정을 늘려서 이 작업을 수행할 수 있습니다. 각 연결에서 메모리와 운영 체제 파일 설명자를 사용하고 초기화 중에 and 핸드셰이크가 필요하기 때문에 리소스 사용량이 증가합니다. SSL WebSocket