All Products
Search
Document Center

Alibaba Cloud Service Mesh:Mengapa permintaan berdurasi panjang terputus atau gagal setelah proxy sidecar disuntikkan?

Last Updated:Aug 28, 2026

Ketika Pod yang telah disuntikkan proxy sidecar dihentikan, permintaan berdurasi panjang ke dan dari Pod tersebut dapat terputus atau gagal. Pelajari penyebab masalah ini serta cara mengatasinya.

Gejala

Setelah proxy sidecar disuntikkan ke dalam Pod, dua masalah berikut terjadi saat Pod tersebut dihentikan:

  • Beberapa permintaan berdurasi panjang yang dikirim ke Pod tersebut terputus.

  • Permintaan yang dikirim oleh Pod tersebut ke layanan lain mungkin gagal.

Penyebab

Setelah proxy sidecar disuntikkan ke dalam Pod, istio-proxy meneruskan lalu lintas aplikasi Pod tersebut. Saat Pod mulai dihentikan, Service terkait tidak lagi meneruskan lalu lintas ke Pod tersebut.

Di Istio, istio-proxy secara default dihentikan paksa 5 detik setelah menerima sinyal terminasi. Selama periode 5 detik tersebut, istio-proxy berhenti menerima koneksi inbound baru, tetapi tetap memproses koneksi inbound yang sedang berlangsung. Lalu lintas outbound tidak terpengaruh selama periode ini dan masih dapat dimulai. Setelah 5 detik berlalu, istio-proxy dihentikan. Jika pemrosesan panggilan ke layanan yang sedang dihentikan memerlukan waktu lebih lama, koneksi inbound dan outbound yang sedang berlangsung akan diputus sebelum permintaan selesai diproses.

Solusi

Kedua solusi berikut memberikan waktu tambahan bagi koneksi inbound dan outbound yang sedang berlangsung untuk menyelesaikan proses sebelum istio-proxy dihentikan—yang secara default terjadi 5 detik setelah sinyal terminasi diterima. Jika Anda dapat memperkirakan durasi maksimum permintaan, perpanjang durasi drain terminasi seperti dijelaskan dalam Solusi 1. Jika tidak dapat memperkirakannya, konfigurasikan skrip preStop seperti dijelaskan dalam Solusi 2.

Solusi 1: Perpanjang durasi drain terminasi proxy sidecar

Perpanjang durasi drain terminasi proxy sidecar agar koneksi inbound dan outbound dapat sepenuhnya diproses dalam periode tersebut.

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Pada halaman Configure the agent parameters of the injected Sidecar, klik tab Namespace.

  4. Pilih Namespace, klik Lifecycle Management, pilih Sidecar Proxy Drain Duration at Pod Termination, masukkan durasi, lalu klik Update Settings.

Solusi 2: Konfigurasikan skrip preStop untuk siklus hidup proxy sidecar

Jika Anda tidak dapat memperkirakan durasi maksimum permintaan, konfigurasikan skrip preStop untuk siklus hidup proxy sidecar. Skrip preStop memeriksa apakah masih terdapat koneksi permintaan aktif. Setelah tidak ada koneksi permintaan yang tersisa, proxy sidecar menunggu selama durasi default 5 detik, lalu keluar.

  1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Data Plane Component Management > Configure the agent parameters of the injected Sidecar.

  3. Pada halaman Configure the agent parameters of the injected Sidecar, klik tab Namespace.

  4. Pilih Namespace, klik Lifecycle Management, pilih Lifecycle of Sidecar Proxy, masukkan konten berikut di kotak teks, lalu klik Update Settings.

{
  "postStart": {
    "exec": {
      "command": [
        "pilot-agent",
        "wait"
      ]
    }
  },
  "preStop": {
    "exec": {
      "command": [
        "/bin/sh",
        "-c",
        "while [ $(netstat -plunt | grep tcp | grep -v envoy | wc -l | xargs) -ne 0 ]; do sleep 1; done"
      ]
    }
  }
}