全部产品
Search
文档中心

Function Compute:Konfigurasikan siklus hidup instans

更新时间:Dec 17, 2025

Function Compute secara otomatis mengalokasikan satu atau beberapa instans untuk memproses permintaan pengguna. Setiap instans menyediakan lingkungan runtime yang aman dan terisolasi. Saat aplikasi tradisional dimigrasikan ke arsitektur serverless, sifat sementara dari pembuatan dan penghancuran instans fungsi dapat menyebabkan masalah seperti keterlambatan pembaruan data pemantauan, latensi data metrik, atau kehilangan data. Untuk mengatasi tantangan ini, Function Compute menyediakan berbagai kait siklus hidup (lifecycle hooks) untuk memastikan data pemantauan yang real-time dan lengkap.

Siklus hidup instans fungsi

Instans fungsi dibuat dan dihapus secara dinamis berdasarkan volume permintaan saat ini. Siklus hidup setiap instans fungsi mencakup tiga fase: Creating, Invoke, dan Destroy, seperti yang ditunjukkan pada gambar berikut.

image

Creating

Pembuatan instans mengacu pada proses Function Compute dalam membuat instans fungsi berdasarkan konfigurasi fungsi Anda. Selama fase pembuatan instans, Function Compute menjalankan tiga tugas berikut secara berurutan:

  1. Instance Create: Function Compute memuat kode dan layer, atau menarik citra (images), lalu menginisialisasi sebuah instans.

  2. Runtime Init: Function Compute menginisialisasi runtime.

  3. Init Hook: Function Compute mengeksekusi kait Initializer yang telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Initializer hooks.

Gambar berikut menunjukkan fase Creating.

image

Instans dibuat dalam skenario berikut:

  • Elastic scale-out

    Function Compute membuat instans baru untuk memproses permintaan yang diterima jika instans yang ada telah penuh. Instans yang dibuat memasuki fase Invoke setelah selesai dibuat. Elastic scale-out dapat menyebabkan cold start. Untuk informasi tentang cara mengatasi masalah ini, lihat Best practices for optimizing cold starts in Function Compute.

  • Penyesuaian instans minimum

    Jika Anda mengubah jumlah minimum instans untuk suatu fungsi dari 0 menjadi 1 atau lebih, Function Compute segera memulai proses pembuatan instans tersebut. Jika tidak ada permintaan pemanggilan yang diterima, fase Invoke akan terjadi jauh setelah fase Creating. Untuk informasi lebih lanjut, lihat Configure startup snapshot elasticity policies.

Invoke

Selama waktu proses instans, penanganan (handler) fungsi Anda dipanggil untuk memproses permintaan pemanggilan fungsi dari sumber internal maupun eksternal. Pada fase Invoke, untuk runtime bawaan yang didukung oleh Function Compute, satu instans hanya memproses satu permintaan dalam satu waktu. Untuk runtime kustom atau runtime kontainer kustom, satu instans dapat memproses beberapa permintaan secara bersamaan. Anda dapat mengaktifkan beberapa permintaan konkuren per instans dengan mengonfigurasi konkurensi instans. Untuk informasi lebih lanjut, lihat Configure instance concurrency.

Function Compute hanya menagih berdasarkan permintaan aktual dan eksekusi hook. Instans dibekukan selama periode tanpa permintaan dan karenanya tidak dikenai biaya. Untuk informasi lebih lanjut, lihat Billing.

Destroy

Fase ini dipicu jika instans fungsi tidak menerima pemanggilan apa pun selama periode tertentu. Selama fase Destroy, Function Compute pertama-tama mengeksekusi kait PreStop. Anda dapat melakukan tugas pembersihan dalam kait PreStop.

Instans dihancurkan dalam skenario berikut:

  • Instans idle: Jika instans tidak menerima permintaan pemanggilan selama periode tertentu, Function Compute secara otomatis mereklaim instans tersebut.

  • Penyesuaian instans minimum: Saat Anda mengurangi jumlah instans minimum, Function Compute segera menghancurkan instans berlebih.

  • Eksepsi instans: Jika instans mengalami eksepsi selama fase Creating atau Running, Function Compute menghancurkan instans tersebut.

Mekanisme pembekuan instans

Ketika tidak ada permintaan pemanggilan, Function Compute membekukan (Freeze) instans, dan ketika permintaan baru tiba, Function Compute mencairkan (Thaw) instans tersebut. Gambar berikut menunjukkan proses ini.

image

Sebuah instans dibekukan dalam skenario berikut:

  • Instans telah diinisialisasi tetapi belum dipanggil oleh permintaan apa pun.

  • Instans dipanggil untuk memproses permintaan dan permintaan berikutnya tidak segera diajukan.

Setelah fase pemanggilan selesai, Function Compute membekukan instans fungsi tersebut. Proses latar belakang, thread, atau korutin dalam program tidak dapat terus berjalan, dan log asinkron mungkin tidak berhasil ditulis.

Batasan

  • Fungsi GPU mendukung dua jenis kait Initializer: Code Invocation dan Command Execution. Kedua jenis ini tidak dapat dikonfigurasi secara bersamaan. Hanya satu yang dapat aktif.

  • Untuk fungsi event, Web, dan task, hanya tipe Code Invocation yang didukung. Tipe ini diaktifkan secara default, dan Anda tidak perlu memilihnya secara manual.

  • Kait PreStop hanya mendukung tipe Code Invocation, dan semua runtime mendukung kait PreStop.

  • Parameter input kait PreStop tidak berisi parameter event.

  • Kait PreStop tidak mendukung nilai kembali, dan logika apa pun yang ditambahkan ke kait untuk mengembalikan nilai tidak berlaku.

  • Jika Anda menggunakan Java Runtime, Anda harus memperbarui fc-java-core ke versi 1.4.0 atau yang lebih baru untuk menggunakan fitur kait PreStop.

  • Ketika fungsi mengembalikan tanggapan, Function Compute membekukan instans fungsi tersebut. Anda tidak dapat mengasumsikan bahwa semua proses asinkron, thread, dan korutin berhasil dieksekusi saat tanggapan dikembalikan. Anda juga tidak dapat mengasumsikan bahwa log asinkron telah diperbarui.

  • Untuk kait tipe Code Invocation, metode konfigurasinya berbeda-beda tergantung runtime. Untuk runtime bawaan, Anda perlu menyesuaikan titik masuk (entry point) kait saat mengonfigurasi kait siklus hidup. Misalnya, jika Anda mengonfigurasi kait Initializer sebagai index.initialize, Anda perlu menambahkan fungsi callback initialize dalam kode Anda. Untuk runtime kustom dan runtime kontainer kustom, setelah mengonfigurasi kait Initializer dan PreStop, sistem akan mengirim permintaan HTTP (POST /initialize atau GET /pre-stop) ke fungsi Anda saat instans dimulai atau dihentikan. Anda perlu merespons permintaan ini dalam kode bisnis Anda.

Penagihan

Anda tidak dikenai biaya berdasarkan jumlah pemanggilan untuk kait siklus hidup instans. Item yang dapat ditagih lainnya sama seperti pemanggilan biasa. Gambar berikut menunjukkan durasi penagihan. Untuk informasi lebih lanjut tentang metode penagihan, lihat Billing overview.

image

Persyaratan

Pembuatan fungsi telah selesai. Untuk informasi lebih lanjut, lihat Create a function.

Konfigurasikan kait siklus hidup instans

Konfigurasikan kait di Konsol Function Compute

  1. Masuk ke Function Compute console. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih Wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman Function Details, klik tab Configurations. Klik Instance Configuration di sebelah kanan bagian Instance Configuration.

  4. Di panel Instance Configuration, atur kait Initializer dan periode timeout.

    Topik ini memberikan contoh konfigurasi kait Initializer untuk fungsi GPU. Untuk fungsi event, web, dan task, kait Initializer hanya mendukung tipe Code Invocation.

    • Pilih tipe Code Invocation

      image

    • Pilih tipe Command Execution

      image

  5. Juga di panel Instance Configuration, lanjutkan mengatur kait PreStop dan periode timeout, lalu klik Deploy.

    image

  6. Jika Anda mengonfigurasi kait Initializer atau PreStop tipe Code Invocation, Anda perlu mengimplementasikan fungsi yang sesuai dalam kode Anda.

    1. Klik tab Code. Di editor kode, tambahkan logika fungsi kait.

      Misalnya, jika Anda mengonfigurasi kait PreStop sebagai index.preStop, Anda perlu mengimplementasikan fungsi preStop. Untuk informasi lebih lanjut tentang cara mengimplementasikan kait siklus hidup di berbagai runtime, lihat Lifecycle hooks for function instances in different runtimes.

      Catatan

      IDE online mendukung PHP, Python, Node.js, dan runtime kustom. Namun, IDE ini tidak mendukung bahasa terkompilasi seperti Java, Go, dan .NET, serta tidak mendukung runtime Custom Container.

    2. Klik Deploy Code di atas editor kode, lalu klik Test Function.

Konfigurasikan kait menggunakan Serverless Devs

Potongan kode berikut menunjukkan contoh file s.yaml jika Anda menggunakan Serverless Devs untuk mengonfigurasi kait initializer:

  codeUri: './code.zip'
  ......
  instanceLifecycleConfig:
    initializer:
      timeout: 60
      command:
        - /bin/sh
        - -c
        - echo "hello"

Jika Anda ingin menonaktifkan kait, Anda harus secara eksplisit mengatur parameter handler dan command menjadi kosong. Jika tidak, backend tidak akan diperbarui. Misalnya, untuk menonaktifkan kait initializer, Anda perlu melakukan deploy dengan konfigurasi berikut. Perhatikan bahwa parameter timeout dan command kait initializer kini tidak berlaku.

  codeUri: './code.zip'
  ......
  instanceLifecycleConfig:
    initializer:
      handler: ""
      timeout: 60
      command: ""

Untuk informasi lebih lanjut tentang cara mengimplementasikan kait siklus hidup di berbagai runtime, lihat Lifecycle hooks for function instances in different runtimes.

Konfigurasikan kait menggunakan SDK

Anda dapat menggunakan SDK untuk melakukan deploy dan memperbarui kait. Bagian ini menjelaskan cara mendapatkan contoh kode SDK yang diperlukan untuk mengonfigurasi kait saat membuat fungsi.

  1. Buka halaman CreateFunction - Create Function, klik Debug untuk masuk ke portal OpenAPI.

  2. Di tab Parameters, isi Input Parameters berdasarkan informasi dasar fungsi yang ingin Anda buat.

    Catatan

    Kait preStop saat ini tidak mendukung konfigurasi parameter command.

    image

  3. Setelah mengonfigurasi parameter, klik tab SDK Sample Code untuk mendapatkan contoh kode SDK dalam bahasa pilihan Anda.

Untuk informasi lebih lanjut tentang cara mengimplementasikan kait siklus hidup di berbagai runtime, lihat Lifecycle hooks for function instances in different runtimes.

Kait siklus hidup untuk instans fungsi di berbagai runtime

Semua runtime di Function Compute mendukung kait Initializer dan PreStop. Tabel berikut menjelaskan metode implementasi kait siklus hidup di berbagai runtime.

Runtime

Deskripsi

Referensi

Node.js

Gunakan Node.js untuk mengimplementasikan kait siklus hidup untuk instans fungsi.

Lifecycle hooks for function instances

Python

Gunakan Python untuk mengimplementasikan kait siklus hidup untuk instans fungsi.

Lifecycle hooks for function instances

PHP

Gunakan PHP untuk mengimplementasikan kait siklus hidup untuk instans fungsi.

Lifecycle hooks for function instances

Java

Gunakan Java untuk mengimplementasikan kait siklus hidup untuk instans fungsi.

Lifecycle hooks for function instances

C#

Gunakan C# untuk mengimplementasikan kait siklus hidup untuk instans fungsi.

Lifecycle hooks for function instances

Go

Gunakan Go untuk mengimplementasikan kait siklus hidup untuk instans fungsi.

Lifecycle hooks for function instances

Custom runtimes

Implementasikan kait siklus hidup untuk instans dalam runtime kustom.

Lifecycle hooks for function instances

Custom Container runtimes

Implementasikan kait siklus hidup untuk instans dalam runtime Custom Container.

Lifecycle hooks for function instances

Kueri log terkait kait

Setelah Anda mengonfigurasi kait siklus hidup instans dan menjalankan kodenya, Anda dapat mengkueri log yang terkait dengan kait tersebut.

Catatan

Saat ini, log yang dihasilkan oleh kait tipe Command Execution tidak didukung untuk ditulis ke log fungsi.

  1. Masuk ke Function Compute console. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih Wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman Function Details, klik tab Logs. Di tab Invocation Requests, temukan permintaan yang log-nya ingin Anda lihat, lalu klik Advanced Logs di kolom Actions.

    Anda dapat menggunakan ID instans yang disalin untuk mengkueri log awal dan akhir semua kait siklus hidup. Anda juga dapat menggunakan instance ID + lifecycle hook keyword untuk mengkueri log awal dan akhir kait tertentu, misalnya, c-62833f38-20f1629801fa4bd***** and PreStop.db_lifecycle_log

    Anda juga dapat mengkueri log permintaan berdasarkan ID permintaan yang terdapat di log awal dan akhir. Jika log pengguna tidak berisi ID permintaan, Anda dapat mengklik ikon db_lifecycle_log_context untuk mendapatkan log konteks.