All Products
Search
Document Center

Function Compute:Konfigurasikan siklus hidup instans

Last Updated:Jun 21, 2026

Saat menangani permintaan pengguna, Function Compute secara otomatis mengalokasikan satu atau beberapa instans. Setiap instans menyediakan lingkungan runtime yang aman dan terisolasi. Saat memigrasikan aplikasi tradisional ke arsitektur serverless, sifat sementara dari pembuatan dan penghancuran instans dapat menyebabkan masalah seperti keterlambatan pembaruan data pemantauan, latensi metrik, atau kehilangan data. Untuk mengatasi hal tersebut, Function Compute menyediakan instance lifecycle hook untuk memastikan data pemantauan Anda tetap tepat waktu dan lengkap.

Siklus hidup instans fungsi

Instans fungsi dibuat dan dihapus sesuai permintaan berdasarkan volume pemanggilan fungsi Anda saat ini. Siklus hidup setiap instans fungsi mencakup tiga fase: instance creation, invocation, dan instance destruction, seperti yang ditunjukkan pada gambar berikut.

Creating

Selama fase Creating, Function Compute membuat instans fungsi berdasarkan konfigurasi fungsi Anda. Pada fase ini, Function Compute menjalankan tugas-tugas berikut secara berurutan:

  1. Instance Create: mencakup pemuatan kode, pemuatan layer atau penarikan image, serta memulai instans.

  2. Runtime Init.

  3. Jalankan kait Initializer yang dikonfigurasi. Untuk informasi lebih lanjut, lihat Initializer hook.

Pembuatan instans biasanya terjadi dalam dua skenario berikut.

  • Elastic scale-out

    Saat permintaan pemanggilan diterima dan semua instans fungsi saat ini sedang sibuk, instans baru dibuat untuk menangani permintaan tersebut. Instans dibuat segera, lalu proses pemanggilan dimulai. Elastic scale-out ini dapat menyebabkan cold start. Untuk informasi tentang cara mengurangi masalah ini, lihat Best practices for optimizing cold starts in Function Compute.

  • Penyesuaian jumlah minimum instans

    Jika Anda mengubah jumlah minimum instans yang dikonfigurasi dari 0 menjadi 1 atau lebih, Function Compute segera memulai proses pembuatan instans. Jika tidak ada permintaan pemanggilan yang diterima pada saat itu, mungkin terjadi jeda antara pembuatan instans dan pemanggilan pertama. Untuk informasi lebih lanjut, lihat Configure an elastic policy for the minimum number of instances.

Invoke

Selama instans berjalan, Function Compute memanggil handler fungsi Anda untuk memproses permintaan pemanggilan. Selama fase pemanggilan, untuk runtime bawaan, satu instans hanya menangani satu permintaan dalam satu waktu. Untuk custom runtime atau custom container runtime, satu instans dapat menangani beberapa permintaan secara konkuren dengan mengonfigurasi instance concurrency. Untuk informasi lebih lanjut, lihat Configure instance concurrency.

Function Compute hanya menagih waktu saat kode Anda dieksekusi, termasuk permintaan dan handler hook. Selama periode idle antar permintaan, instans dibekukan dan 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 penghancuran, Function Compute pertama-tama menjalankan kait PreStop. Anda dapat melakukan tugas pembersihan dalam kait ini.

Penghancuran instans biasanya terjadi dalam tiga skenario berikut.

  • Instans idle: Jika instans tetap idle selama periode tertentu, Function Compute secara otomatis mereklamasinya.

  • Penyesuaian jumlah minimum instans: Saat Anda melakukan scale-in jumlah minimum instans, Function Compute segera menghancurkan instans berlebih.

  • Exception instans: Jika instans mengalami error selama fase pembuatan atau pemanggilan, Function Compute menghancurkannya.

Mekanisme pembekuan instans

Saat tidak ada permintaan pemanggilan, Function Compute membekukan instans tersebut. Saat permintaan baru tiba, Function Compute mengaktifkan kembali instans tersebut. Proses ini ditunjukkan pada gambar berikut.

Pembekuan instans terutama terjadi dalam dua situasi berikut:

  • Setelah fase inisialisasi instans selesai tetapi sebelum pemanggilan pertama.

  • Setelah pemanggilan selesai tetapi sebelum pemanggilan berikutnya dimulai.

Setelah pemanggilan selesai, Function Compute membekukan instans fungsi. Proses latar belakang, thread, atau korutin dalam kode Anda dijeda dan tidak dapat dilanjutkan. Hal ini dapat mencegah log asinkron ditulis dengan sukses.

Batasan

  • Untuk fungsi yang dipercepat GPU, kait Initializer mendukung dua jenis: Code Invocation dan Command Execution. Anda hanya dapat mengaktifkan salah satu jenis ini dalam satu waktu.

  • Untuk fungsi yang dipicu event, web, dan task, kait Initializer hanya mendukung jenis Code Invocation.

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

  • Parameter input untuk metode kait PreStop tidak mencakup parameter event.

  • Kait PreStop tidak mengembalikan nilai, dan logika return apa pun dalam fungsi Anda akan diabaikan.

  • Jika Anda menggunakan runtime Java, Anda harus memperbarui fc-java-core ke versi 1.4.0 atau yang lebih baru. Jika tidak, Anda tidak dapat menggunakan kait PreStop.

  • Jangan mengasumsikan bahwa operasi asinkron, seperti thread latar belakang atau flushing log, akan selesai sebelum instans dibekukan.

  • Metode konfigurasi kait Code Invocation bervariasi tergantung runtime. Untuk runtime bawaan, Anda harus menentukan entry point kustom saat mengonfigurasi kait siklus hidup. Misalnya, jika Anda mengatur handler kait Initializer ke index.initialize, Anda harus menambahkan fungsi kait initialize ke kode Anda. Sebaliknya, untuk runtime kustom dan custom container runtime, setelah Anda mengonfigurasi kait Initializer dan PreStop, sistem mengirim permintaan HTTP (POST /initialize atau GET /pre-stop) ke fungsi Anda saat instans dimulai atau dihentikan. Kode aplikasi Anda harus menangani permintaan ini.

Billing

Pemanggilan instance lifecycle hook tidak dikenai biaya permintaan. Biaya lainnya dihitung menggunakan logika yang sama seperti fase pemanggilan instans. Durasi yang dikenai biaya diilustrasikan pada gambar berikut. Untuk informasi lebih lanjut tentang penagihan, lihat Billing overview.

Prasyarat

Fungsi telah dibuat. Untuk informasi lebih lanjut, lihat Create a function.

Konfigurasikan instance lifecycle hook

Konsol

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

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

  3. Di halaman detail fungsi, klik tab Configuration, lalu klik Instance Configuration di bagian Modify.

  4. Di panel Instance Configuration, konfigurasikan kait Initializer dan periode timeout-nya.

    Topik ini menggunakan fungsi yang dipercepat GPU sebagai contoh untuk menjelaskan cara mengonfigurasi kait Initializer. Untuk fungsi yang dipicu event, web, dan task, kait Initializer hanya mendukung jenis Code Invocation. Anda dapat mengikuti langkah-langkah untuk jenis Code Invocation yang dijelaskan dalam topik ini.

    • Pilih jenis Code Invocation

      Nyalakan sakelar Initializer hook dan atur Initializer hook timeout menjadi 300 detik. Setelah Anda mengaktifkan fitur ini, Function Compute mengirim permintaan HTTP POST /initialize ke fungsi saat instans dimulai. Respons 200 menunjukkan keberhasilan, sedangkan respons 4xx atau 5xx menyebabkan error atau restart instans.

    • Pilih jenis Command Execution

      Nyalakan sakelar Initializer hook, atur Initializer hook timeout menjadi 300 detik, dan atur Command menjadi >/bin/sh. Di editor kode, tulis skrip shell untuk mengirim permintaan pemeriksaan kesehatan POST ke API Stable Diffusion lokal. Atur URL ke http://localhost:7860 dan REQUEST_PATH ke sdapi/v1/txt2img. Buat muatan JSON yang mencakup bidang prompt, steps, height, dan width, lalu gunakan curl untuk mengirim permintaan tersebut.

  5. Di panel Instance Configuration, konfigurasikan kait PreStop dan periode timeout-nya, lalu klik Deploy.

  6. Jika Anda mengonfigurasi kait jenis Code Invocation, Anda harus mengimplementasikan fungsi yang sesuai dalam kode Anda.

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

      Misalnya, jika Anda mengonfigurasi handler kait PreStop sebagai index.preStop, Anda harus mengimplementasikan fungsi preStop dalam kode Anda. Untuk informasi tentang cara mengimplementasikan instance lifecycle hook untuk berbagai runtime, lihat Lifecycle hooks for function instances.

      Catatan

      IDE online mendukung PHP, Python, Node.js, dan runtime kustom, tetapi tidak mendukung bahasa terkompilasi seperti Java, Go, dan .NET, atau custom container runtime.

    2. Di atas editor kode, klik Deploy, lalu klik Test Function.

Serverless Devs

Saat menggunakan Serverless Devs untuk mengonfigurasi kait Initializer, potongan kode dalam file s.yaml Anda mirip dengan contoh berikut:

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

Jika Anda perlu menonaktifkan kait, Anda harus secara eksplisit mengatur parameter handler dan command-nya menjadi string kosong. Hal ini diperlukan karena backend tidak akan menerapkan pembaruan tersebut jika tidak. Misalnya, untuk menonaktifkan kait Initializer, deploy konfigurasi berikut. Parameter timeout dan command untuk kait Initializer kemudian akan diabaikan.

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

Untuk informasi tentang cara mengimplementasikan instance lifecycle hook untuk berbagai runtime, lihat Lifecycle hooks for function instances.

SDK

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

  1. Buka topik referensi API CreateFunction dan klik Debug untuk membuka OpenAPI Portal.

  2. Di tab Parameters, tentukan input parameters berdasarkan fungsi yang ingin Anda buat.

    Catatan

    Parameter command tidak didukung untuk kait PreStop.

    Bentangkan instanceLifecycleConfig. Di bagian initializer, atur timeout menjadi 300. Di daftar command, tambahkan item di indeks 0 dengan nilai curl -X POST 'http://localhost:9000/preWarm'. Di bagian preStop, atur handler menjadi index.preStop dan timeout menjadi 3.

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

Untuk informasi tentang cara mengimplementasikan instance lifecycle hook untuk berbagai runtime, lihat Lifecycle hooks for function instances.

Lifecycle hooks for function instances

Semua runtime di Function Compute mendukung kait Initializer dan PreStop. Rujuk dokumentasi berikut untuk mempelajari cara mengimplementasikan instance lifecycle hook di berbagai runtime.

Runtime

Description

References

Node.js

Implement lifecycle hooks for function instances in Node.js.

Lifecycle hooks for function instances

Python

Implement lifecycle hooks for function instances in Python.

Lifecycle hooks for function instances

PHP

Implement lifecycle hooks for function instances in PHP.

Lifecycle hooks for function instances

Java

Implement lifecycle hooks for function instances in Java.

Lifecycle hooks for function instances

C#

Implement lifecycle hooks for function instances in C#.

Lifecycle hooks for function instances

Go

Implement lifecycle hooks for function instances in Go.

Lifecycle hooks for function instances

custom runtime

Implement lifecycle hooks for function instances in a custom runtime.

Lifecycle hooks for function instances

custom container runtime

Implement lifecycle hooks for function instances in a custom container runtime.

Lifecycle hooks for function instances

Kueri log terkait kait

Setelah Anda mengonfigurasi instance lifecycle hook dan mengimplementasikan fungsi yang sesuai, Anda dapat mengkueri log terkait.

Catatan

Log yang dihasilkan oleh kait jenis Command Execution saat ini tidak dapat ditulis ke log fungsi.

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

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

  3. Di halaman detail fungsi, klik tab Logs. Di tab Invocation Requests, temukan permintaan target dan klik Advanced Logs di kolom Actions.

    Anda dapat menggunakan ID instans untuk mengkueri log awal dan akhir untuk semua lifecycle hook. Anda juga dapat menggunakan kueri seperti instance ID AND "hook keyword" untuk menemukan log untuk kait tertentu, misalnya, c-62833f38-20f1629801fa4bd***** and PreStop.

    Anda juga dapat menggunakan RequestId dari log awal dan akhir untuk mengkueri log yang terkait dengan permintaan tertentu. Jika log tidak berisi RequestId, klik ikon db_lifecycle_log_context di entri log tersebut untuk melihat log konteksnya.