

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risoluzione dei problemi relativi a `java.util.concurrent.TimeoutException`
<a name="best-practices-gremlin-java-exceptions-TimeoutException"></a>

Il client Gremlin Java lancia un messaggio `java.util.concurrent.TimeoutException` quando una richiesta Gremlin scade al client stesso in attesa che uno slot in una delle connessioni diventi disponibile. WebSocket La durata di questo timeout è controllata dal parametro configurabile lato client `maxWaitForConnection`.

**Nota**  
Poiché le richieste che raggiungono il timeout a livello del client non vengono mai inviate al server, non si riflettono nelle metriche acquisite dal server, ad esempio `GremlinRequestsPerSec`.

Questo tipo di timeout viene generalmente causato in due modi:
+ **Il server ha effettivamente raggiunto la capacità massima.** In tal caso, la coda sul server si riempie, cosa che puoi rilevare monitorando la metrica. [MainRequestQueuePendingRequests](cw-metrics.md#cw-metrics-available) CloudWatch Il numero di query parallele che il server può gestire dipende dalle dimensioni dell'istanza.

  Se la metrica `MainRequestQueuePendingRequests` non mostra un accumulo di richieste in sospeso nel server, il server può gestire altre richieste e il timeout è causato dalla limitazione delle richieste sul lato client.
+ **Limitazione delle richieste sul lato client.** In genere, questo problema può essere risolto modificando le impostazioni di configurazione del client.

  Il numero massimo di richieste parallele che il client può inviare può essere stimato approssimativamente come segue:

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

  L'invio di un numero di richieste maggiore del valore di `maxParallelQueries` al client causa eccezioni di tipo `java.util.concurrent.TimeoutException`. In genere è possibile risolvere il problema in vari modi:
  + *Aumentare la durata del timeout della connessione.* Se la latenza non è fondamentale per l'applicazione, aumenta il valore dell'impostazione `maxWaitForConnection` del client. Il client attende quindi più a lungo prima che scada il timeout, aumentando così la latenza.
  + *Aumentare il numero massimo di richieste per connessione.* Ciò consente di inviare più richieste utilizzando la stessa connessione. WebSocket A tale scopo, è necessario aumentare i valori delle impostazioni `maxSimultaneousUsagePerConnection` e `maxInProcessPerConnection` del client. Queste impostazioni devono in genere avere lo stesso valore. 
  + *Aumentare il numero di connessioni nel pool di connessioni.* A tale scopo, è necessario aumentare il valore dell'impostazione `maxConnectionPoolSize` del client. Il costo è un maggiore consumo di risorse, poiché ogni connessione utilizza memoria e un descrittore di file del sistema operativo e richiede un SSL e un handshake durante l'inizializzazione. WebSocket