

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

# Mengelola kumpulan koneksi dan siklus hidup di lingkungan kontainer
<a name="best-practices-ecs-eks-connections"></a>

Mengelola koneksi ke Neptunus secara efektif sangat penting dalam lingkungan kontainer di mana kontainer (pod di Kubernetes) sering memulai, berhenti, dan menskalakan. Neptunus memberlakukan WebSocket beberapa batasan koneksi:
+ [Setiap jenis instans memiliki jumlah maksimum koneksi bersamaan WebSocket ](https://docs.aws.amazon.com/neptune/latest/userguide/limits.html#limits-websockets)
+ Koneksi idle ditutup setelah 20-25 menit tidak aktif
+ [Dengan autentikasi IAM, koneksi ditutup paksa setelah 10 hari terlepas dari aktivitasnya (lihat batas koneksi) WebSocket ](https://docs.aws.amazon.com/neptune/latest/userguide/limits.html#limits-websockets)

Beberapa pengemudi mendukung detak jantung yang tetap hidup secara berkala untuk mencegah pemutusan sambungan yang menganggur. Misalnya, driver Gremlin Java `keepAliveInterval` mengirimkan ping berkala ke server. Konsultasikan opsi konfigurasi driver spesifik Anda untuk menentukan pengaturan keep-alive yang tersedia dan bagaimana mereka berinteraksi dengan batas waktu idle Neptunus.

Memahami batasan ini membantu Anda merancang penanganan koneksi yang bekerja dengan baik dengan pola orkestrasi kontainer seperti penerapan bergulir, penskalaan otomatis, dan daur ulang kontainer. Untuk panduan umum tentang manajemen koneksi dengan driver Java Gremlin, lihat [Tutup klien untuk menghindari batas koneksi](best-practices-gremlin-java-close-connections.md) dan. [Buat koneksi baru setelah failover](best-practices-gremlin-java-new-connection.md)

**Tutup koneksi saat shutdown kontainer**

Terapkan shutdown yang anggun dengan menambahkan `SIGTERM` handler yang menutup klien grafik Anda sebelum container keluar. Misalnya, panggil Gremlin Java`cluster.close()`, Gremlin di `driverRemoteConnection.close()` Go atau Python, atau Bolt untuk driver Neo4j. `driver.close()` Di Kubernetes, gunakan `preStop` hook untuk menguras koneksi sebelum `SIGTERM` dikirim, terutama selama pembaruan bergulir.

**catatan**  
Docker dan Amazon ECS hanya mengirimkan `SIGTERM` ke PID 1 dalam wadah. Gunakan formulir exec di Dockerfile Anda (misalnya, `ENTRYPOINT ["java", "-jar", "app.jar"]` tidak`ENTRYPOINT java -jar app.jar`) atau proses init seperti `tini` untuk memastikan aplikasi Anda menerima sinyal.

**Gunakan satu contoh klien per kontainer**

Membuat beberapa `neo4j.Driver` instance Gremlin `DriverRemoteConnection` atau Bolt dalam wadah yang sama mengalikan penggunaan koneksi. Bagikan satu instance klien di semua utas dalam wadah. Objek klien aman untuk utas.

**Ukuran kolam koneksi relatif terhadap armada Anda**

Atur `maxConnectionPoolSize` agar total koneksi di semua kontainer tidak melebihi batas koneksi instance Neptunus. Misalnya, jika Anda menjalankan 20 kontainer dengan masing-masing 8 utas, hitung ukuran kumpulan per kontainer sehingga ukuran kolam 20 × tetap dalam [batas instance untuk jenis instance Anda](https://docs.aws.amazon.com/neptune/latest/userguide/limits.html#limits-websockets). Untuk informasi selengkapnya tentang mengonfigurasi ukuran kumpulan koneksi, lihat[Setel `maxInProcessPerConnection` dan `maxSimultaneousUsagePerConnection` ke nilai yang sama](best-practices-gremlin-java-maxes.md).

**Tetapkan batas waktu tunggu koneksi**

Di driver Java Gremlin, konfigurasikan `maxWaitForConnection` ke nilai yang wajar seperti 5-10 detik. Defaultnya seringkali tak terbatas atau sangat panjang, yang menyebabkan utas menggantung saat kumpulan habis daripada gagal dengan cepat dengan kesalahan yang jelas. Tidak semua driver bahasa mendukung pengaturan ini—periksa dokumentasi driver Anda untuk opsi konfigurasi yang setara.