

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pecahkan masalah `java.util.concurrent.TimeoutException`
<a name="best-practices-gremlin-java-exceptions-TimeoutException"></a>

Klien Gremlin Java melempar `java.util.concurrent.TimeoutException` ketika permintaan Gremlin habis waktu pada klien itu sendiri sambil menunggu slot di salah satu koneksi menjadi tersedia. WebSocket Durasi batas waktu ini dikendalikan oleh parameter konfigurasi di sisi klien `maxWaitForConnection`.

**catatan**  
Karena permintaan yang kehabisan waktu di klien tidak pernah dikirim ke server, mereka tidak tercermin dalam salah satu metrik yang direkam di server, seperti `GremlinRequestsPerSec`.

Batas waktu semacam ini umumnya disebabkan oleh salah satu dari dua cara berikut:
+ **Server sebenarnya mencapai kapasitas maksimum.** Jika ini masalahnya, antrian di server terisi, yang dapat Anda deteksi dengan memantau metrik. [MainRequestQueuePendingRequests](cw-metrics.md#cw-metrics-available) CloudWatch Jumlah kueri paralel yang dapat ditangani server bergantung pada ukuran instansnya.

  Jika metrik `MainRequestQueuePendingRequests` tidak menampilkan penumpukan permintaan tertunda di server, maka server dapat menangani lebih banyak permintaan dan batas waktu disebabkan oleh throttling sisi klien.
+ **Pelambatan permintaan klien.** Hal ini umumnya dapat diperbaiki dengan mengubah pengaturan konfigurasi klien.

  Jumlah maksimum permintaan paralel yang dapat dikirim klien dapat diperkirakan secara kasar sebagai berikut:

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

  Mengirim lebih dari `maxParallelQueries` ke klien menyebabkan pengecualian `java.util.concurrent.TimeoutException`. Anda biasanya dapat memperbaikinya dengan beberapa cara:
  + *Tingkatkan durasi batas waktu koneksi.* Jika latensi tidak penting untuk aplikasi Anda, tingkatkan pengaturan `maxWaitForConnection` klien. Klien kemudian menunggu lebih lama sebelum waktu habis, yang pada gilirannya dapat meningkatkan latensi.
  + *Tingkatkan permintaan maksimum per koneksi.* Ini memungkinkan lebih banyak permintaan dikirim menggunakan WebSocket koneksi yang sama. Lakukan ini dengan meningkatkan pengaturan `maxSimultaneousUsagePerConnection` dan `maxInProcessPerConnection` klien. Pengaturan ini umumnya memiliki nilai yang sama. 
  + *Tingkatkan jumlah koneksi di kolam koneksi.* Lakukan ini dengan meningkatkan pengaturan `maxConnectionPoolSize` klien. Biaya peningkatan konsumsi sumber daya, karena setiap koneksi menggunakan memori dan deskriptor file sistem operasi, dan memerlukan SSL dan jabat tangan selama inisialisasi. WebSocket