View a markdown version of this page

Optimalkan parameter pengeringan koneksi penyeimbang beban untuk Amazon ECS - Amazon Elastic Container Service

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

Optimalkan parameter pengeringan koneksi penyeimbang beban untuk Amazon ECS

Untuk memungkinkan pengoptimalan, klien mempertahankan koneksi tetap hidup ke layanan kontainer. Hal ini memungkinkan permintaan berikutnya dari klien tersebut untuk menggunakan kembali koneksi yang ada. Saat Anda ingin menghentikan lalu lintas ke kontainer, Anda memberi tahu penyeimbang beban. Penyeimbang beban secara berkala memeriksa untuk melihat apakah klien menutup koneksi keep alive. Amazon ECS memantau penyeimbang beban, dan menunggu penyeimbang beban melaporkan bahwa koneksi keep alive ditutup (target dalam keadaan tertentu). UNUSED

Jumlah waktu yang menunggu penyeimbang beban untuk memindahkan target ke UNUSED status adalah penundaan deregistrasi. Anda dapat mengonfigurasi parameter penyeimbang beban berikut untuk mempercepat penerapan Anda.

  • deregistration_delay.timeout_seconds: 300 (default)

Bila Anda memiliki layanan dengan waktu respons di bawah 1 detik, setel parameter ke nilai berikut agar load balancer hanya menunggu 5 detik sebelum memutuskan koneksi antara klien dan layanan back-end:

  • deregistration_delay.timeout_seconds: 5

catatan

Jangan mengatur nilai ke 5 detik saat Anda memiliki layanan dengan permintaan berumur panjang, seperti unggahan file yang lambat atau koneksi streaming.

Tanggapan SIGTERM

Amazon ECS pertama-tama mengirimkan sinyal berhenti ke tugas untuk memberi tahu aplikasi perlu selesai dan dimatikan. Sinyal ini dapat didefinisikan dalam gambar wadah Anda dengan instruksi STOPSIGNAL dan akan default ke SIGTERM. Kemudian, Amazon ECS mengirimkan pesan SIGKILL. Ketika aplikasi mengabaikan SIGTERM, layanan Amazon ECS harus menunggu untuk mengirim sinyal SIGKILL untuk menghentikan proses.

Jumlah waktu Amazon ECS menunggu untuk mengirim pesan SIGKILL ditentukan oleh opsi agen Amazon ECS berikut:

  • ECS_CONTAINER_STOP_TIMEOUT: 30 (default)

    Untuk informasi selengkapnya tentang parameter agen kontainer, lihat Agen Kontainer Amazon ECS aktif. GitHub

Untuk mempercepat masa tunggu, atur parameter agen Amazon ECS ke nilai berikut:

  • ECS_CONTAINER_STOP_TIMEOUT: 2

    Jika aplikasi Anda membutuhkan waktu lebih dari 1 detik, kalikan nilainya dengan 2 dan gunakan angka itu sebagai nilainya.

Dalam hal ini, Amazon ECS menunggu 2 detik hingga wadah dimatikan, dan kemudian Amazon ECS mengirimkan pesan SIGKILL ketika aplikasi tidak berhenti.

Anda juga dapat memodifikasi kode aplikasi untuk menjebak sinyal SIGTERM dan bereaksi terhadapnya. Berikut ini adalah contoh di JavaScript:

process.on('SIGTERM', function() { server.close(); })

Kode ini menyebabkan server HTTP berhenti mendengarkan permintaan baru, menyelesaikan menjawab permintaan dalam penerbangan, dan kemudian Node.js proses berakhir karena loop peristiwa tidak ada hubungannya. Mengingat hal ini, jika proses hanya membutuhkan 500 ms untuk menyelesaikan permintaan dalam penerbangannya, itu berakhir lebih awal tanpa harus menunggu batas waktu berhenti dan menerima SIGKILL.