

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Solução de problemas do `java.util.concurrent.TimeoutException`
<a name="best-practices-gremlin-java-exceptions-TimeoutException"></a>

O cliente Gremlin Java lança um `java.util.concurrent.TimeoutException` quando uma solicitação do Gremlin expira no próprio cliente enquanto espera que um slot em uma das WebSocket conexões fique disponível. Essa duração do tempo limite é controlada pelo parâmetro configurável `maxWaitForConnection` do lado do cliente.

**nota**  
Como as solicitações que atingem o tempo limite no cliente nunca são enviadas ao servidor, elas não são refletidas em nenhuma das métricas capturadas no servidor, como `GremlinRequestsPerSec`.

Esse tipo de tempo limite geralmente é causado de duas maneiras:
+ **Na verdade, o servidor atingiu a capacidade máxima.** Se for esse o caso, a fila no servidor é preenchida, o que você pode detectar monitorando a [MainRequestQueuePendingRequests](cw-metrics.md#cw-metrics-available) CloudWatch métrica. O número de consultas paralelas que o servidor pode processar depende do tamanho da instância.

  Se a métrica `MainRequestQueuePendingRequests` não mostrar um acúmulo de solicitações pendentes no servidor, o servidor poderá lidar com mais solicitações e o tempo limite será causado pelo controle de utilização do lado do cliente.
+ **Controle de utilização de solicitações pelo cliente.** Geralmente, isso pode ser corrigido alterando as configurações do cliente.

  O número máximo de solicitações paralelas que o cliente pode enviar pode ser estimado aproximadamente da seguinte forma:

  ```
  maxParallelQueries = maxConnectionPoolSize * Max( maxSimultaneousUsagePerConnection, maxInProcessPerConnection )
  ```

  Enviar mais do que `maxParallelQueries` ao cliente causa exceções `java.util.concurrent.TimeoutException`. Geralmente, é possível corrigir isso de várias maneiras:
  + *Aumente a duração do tempo limite da conexão.* Se a latência não for essencial para a aplicação, aumente a configuração `maxWaitForConnection` do cliente. O cliente então espera mais antes de atingir o tempo limite o que, por sua vez, pode aumentar a latência.
  + *Aumente o máximo de solicitações por conexão.* Isso permite que mais solicitações sejam enviadas usando a mesma WebSocket conexão. Faça isso aumentando as configurações `maxSimultaneousUsagePerConnection` e `maxInProcessPerConnection` do cliente. Essas configurações geralmente devem ter o mesmo valor. 
  + *Aumente o número de conexões no grupo de conexões.* Faça isso aumentando a configuração `maxConnectionPoolSize` do cliente. O custo é o aumento do consumo de recursos, porque cada conexão usa memória e um descritor de arquivo do sistema operacional e exige um SSL e um handshake durante a inicialização. WebSocket