View a markdown version of this page

Mengelola kumpulan koneksi dan siklus hidup di lingkungan kontainer - Amazon Neptune

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

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:

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 dan. Buat koneksi baru setelah failover

Tutup koneksi saat shutdown kontainer

Terapkan shutdown yang anggun dengan menambahkan SIGTERM handler yang menutup klien grafik Anda sebelum container keluar. Misalnya, panggil Gremlin Javacluster.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"] tidakENTRYPOINT 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. Untuk informasi selengkapnya tentang mengonfigurasi ukuran kumpulan koneksi, lihatSetel maxInProcessPerConnection dan maxSimultaneousUsagePerConnection ke nilai yang sama.

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.