

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

# Secara opsional, atur batas waktu pada tingkat per kueri
<a name="best-practices-gremlin-java-per-query-timeout"></a>

Neptune menyediakan kemampuan untuk mengatur batas waktu untuk kueri Anda menggunakan opsi grup parameter `neptune_query_timeout` (lihat [Parameter](parameters.md)). Anda juga dapat mengganti batas waktu global, dengan kode seperti ini:

**catatan**  
Pengaturan batas waktu kueri hanya berlaku untuk evaluasi kueri. Operasi kontrol transaksi berbasis Bytecode seperti `tx().commit()` dan tidak tunduk pada batas `tx().rollback()` waktu kueri. Untuk informasi selengkapnya, lihat [Perilaku batas waktu untuk komit dan rollback bytecode](access-graph-gremlin-transactions.md#access-graph-gremlin-transactions-commit-rollback-timeout).

```
  final Cluster cluster = Cluster.build("localhost")
                                 .port(8182)
                                 .maxInProcessPerConnection(32)
                                 .maxSimultaneousUsagePerConnection(32)
                                 .serializer(Serializers.GRAPHBINARY_V1D0)
                                 .create();

  try {
      final GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster));
      List<Object> verticesWithNamePumba = g.with(ARGS_EVAL_TIMEOUT, 500L).V().has("name", "pumba").out("friendOf").id().toList();
      System.out.println(verticesWithNamePumba);
  } finally {
      cluster.close();
  }
```

Atau, untuk pengiriman kueri berbasis string, kodenya akan terlihat seperti ini:

```
  RequestOptions options = RequestOptions.build().timeout(500).create();
  List<Result> result = client.submit("g.V()", options).all().get();
```

Jika kueri melebihi batas waktu per kueri, Neptunus akan menghentikannya. Apakah akan mencoba lagi kueri waktu habis tergantung pada sifat kegagalan dan beban kerja Anda. Untuk panduan, lihat [Penanganan Pengecualian dan Mencoba Lagi](transactions-exceptions.md).

**catatan**  
Dimungkinkan untuk mengeluarkan biaya tak terduga jika Anda menetapkan nilai batas waktu kueri terlalu tinggi, terutama pada instance tanpa server. Tanpa pengaturan batas waktu yang wajar, kueri Anda dapat terus berjalan lebih lama dari yang Anda harapkan, menimbulkan biaya yang tidak pernah Anda antisipasi. Hal ini terutama berlaku pada instance tanpa server yang dapat meningkatkan skala hingga jenis instance yang besar dan mahal saat menjalankan kueri.  
Anda dapat menghindari pengeluaran tak terduga semacam ini dengan menggunakan nilai batas waktu kueri yang mengakomodasi run-time yang Anda harapkan dan hanya menyebabkan jangka waktu habis yang luar biasa.  
 Mulai dari mesin Neptunus versi 1.3.2.0, Neptunus mendukung parameter neptune\$1lab\$1mode baru sebagai parameter. `StrictTimeoutValidation` Ketika parameter ini memiliki nilai`Enabled`, nilai batas waktu per kueri yang ditentukan sebagai opsi permintaan atau petunjuk kueri tidak dapat melebihi nilai yang ditetapkan secara global dalam grup parameter. Dalam kasus seperti itu, Neptunus akan melempar. `InvalidParameterException`   
 Pengaturan ini dapat dikonfirmasi dalam respons pada titik akhir '/status' saat nilainya. `Disabled` Dalam versi mesin`1.3.2.0`, nilai default parameter ini adalah`Disabled`. Mulai dalam versi mesin`1.4.0.0`, `StrictTimeoutValidation` parameternya secara `Enabled` default.   
 [Untuk informasi selengkapnya tentang bagaimana prioritas batas waktu ditentukan ketika beberapa pengaturan batas waktu dikonfigurasi, lihat dokumentasi parameter neptune\$1query\$1timeout.](parameters.md#parameters-db-cluster-parameters-neptune_query_timeout) 