全部产品
Search
文档中心

Function Compute:Batasan dan aturan penskalaan instans

更新时间:Dec 10, 2025

Ada dua mode penggunaan instans dalam Function Compute: mode on-demand dan mode provisioned. Dalam kedua mode tersebut, Anda dapat mengonfigurasi aturan autoscaling berdasarkan batasan jumlah instans dan kecepatan penskalaannya. Untuk instans yang disediakan, Anda juga dapat mengonfigurasi aturan penjadwalan penskalaan dan penskalaan berbasis ambang batas.

Perilaku penskalaan instans

Function Compute memprioritaskan penggunaan instans yang ada untuk memproses permintaan. Ketika instans yang ada mencapai kapasitas penuh, Function Compute membuat instans baru untuk menangani permintaan. Seiring meningkatnya jumlah permintaan, Function Compute terus membuat instans baru hingga cukup instans tersedia untuk menangani permintaan masuk atau jumlah instans mencapai batas atas. Kecepatan penskalaan dibatasi oleh jumlah maksimum instans burstable yang diizinkan dan laju pertumbuhan maksimum instans. Untuk informasi lebih lanjut tentang batasan di berbagai wilayah, lihat Batasan Kecepatan Penskalaan Instans di Berbagai Wilayah.

Bagian ini menjelaskan perilaku penskalaan instans on-demand dan instans yang disediakan. Mengonfigurasi instans yang disediakan untuk suatu fungsi memungkinkan Anda memesan sejumlah instans tertentu sebelum pemanggilan fungsi, yang membantu mengurangi cold start.

Penskalaan instans on-demand

Jika jumlah instans atau kecepatan penskalaan melebihi batas, Function Compute mengembalikan HTTP 429 status code, yang menunjukkan bahwa kesalahan throttling telah terjadi. Gambar berikut menunjukkan cara Function Compute menerapkan throttling ketika terjadi lonjakan pemanggilan.

  • ①: Function Compute segera membuat instans untuk menangani lonjakan permintaan. Cold start terjadi selama proses ini. Tidak ada kesalahan throttling karena jumlah instans burstable belum mencapai batas atas.

  • ②: Peningkatan jumlah instans sekarang dibatasi oleh laju pertumbuhan instans, karena batas atas untuk instans burstable telah tercapai. Kesalahan throttling dilaporkan untuk beberapa permintaan.

  • ③: Jumlah instans mencapai batas atas, mengakibatkan kesalahan throttling untuk beberapa permintaan.

Penskalaan instans yang disediakan

Ketika jumlah pemanggilan mendadak terlalu besar, kesalahan throttling menjadi tak terhindarkan. Selain itu, pembuatan instans baru memperkenalkan cold start. Keduanya meningkatkan latensi penanganan permintaan. Untuk mengurangi latensi, Anda dapat memesan instans terlebih dahulu di Function Compute. Instans yang dipesan ini disebut instans yang disediakan.

Gambar berikut menunjukkan bagaimana Function Compute menerapkan throttling ketika instans yang disediakan dikonfigurasi dan pemanggilan melonjak dengan cara yang sama seperti dalam kasus mode on-demand.

  • ①: Semua permintaan masuk segera diproses, hingga instans yang disediakan mencapai kapasitas penuh. Selama proses ini, tidak ada cold start yang terjadi, dan tidak ada kesalahan throttling yang dilaporkan.

  • ②: Instans yang disediakan sekarang sepenuhnya dimanfaatkan. Function Compute mulai membuat instans on-demand untuk menangani permintaan berikutnya hingga jumlah instans burstable mencapai batas atas. Selama proses ini, cold start terjadi, tetapi tidak ada kesalahan throttling yang dilaporkan.

Batasan kecepatan penskalaan instans di berbagai wilayah

Wilayah

Jumlah maksimum instans burstable

Laju pertumbuhan instans maksimum

Cina (Hangzhou), Cina (Shanghai), Cina (Beijing), Cina (Zhangjiakou), dan Cina (Shenzhen)

300

300 per menit

Wilayah lainnya

100

100 per menit

  • Dalam wilayah yang sama, batasan kecepatan penskalaan tidak membedakan antara instans yang disediakan dan on-demand.

  • Instans yang dipercepat GPU memiliki kecepatan penskalaan yang lebih lambat dibandingkan instans CPU. Oleh karena itu, kami sarankan Anda memesan instans yang dipercepat GPU terlebih dahulu menggunakan mode provisioned.

Catatan

Jika Anda memerlukan kecepatan penskalaan yang lebih cepat, bergabunglah dengan grup DingTalk (ID grup: 64970014484) untuk dukungan teknis.

Autoscaling instans yang disediakan

Selain menetapkan jumlah tetap instans yang disediakan, Anda dapat melakukan penyesuaian fleksibel dengan mengonfigurasi kebijakan penskalaan berbasis jadwal dan ambang batas. Ini membantu meningkatkan pemanfaatan instans.

Penting

Jika tidak ada kebijakan penskalaan berbasis jadwal atau ambang batas yang dikonfigurasikan untuk instans yang disediakan Anda, jumlah instans yang disediakan akan selalu menjadi nilai parameter defaultTarget.

  • Jika beberapa kebijakan penskalaan berbasis jadwal dikonfigurasikan, jumlah instans yang disediakan pada waktu tertentu ditentukan oleh jumlah instans target yang ditentukan oleh kebijakan aktif.

  • Jika baik kebijakan penskalaan berbasis jadwal maupun ambang batas dikonfigurasikan, jumlah instans yang disediakan pada waktu tertentu ditentukan oleh jumlah instans target tertinggi di antara kebijakan aktif.

Untuk informasi lebih lanjut, lihat Contoh.

Penjadwalan penskalaan

Skenario

Pilih penjadwalan penskalaan ketika fungsi Anda mengalami pola periodik yang jelas atau puncak lalu lintas yang dapat diprediksi. Ketika jumlah pemanggilan konkuren melebihi kapasitas yang ditentukan oleh kebijakan penjadwalan penskalaan, semua permintaan tambahan akan dialihkan ke instans on-demand untuk diproses.

Konfigurasi sampel

Gambar berikut menunjukkan dua tindakan terjadwal untuk penskalaan instans: tindakan pertama menskalakan keluar instans yang disediakan sebelum puncak lalu lintas, sedangkan yang kedua menskalakan masuk instans setelahnya.

Potongan kode berikut menunjukkan cara memanggil operasi PutProvisionConfig untuk mengonfigurasi kebijakan penjadwalan penskalaan. Dalam contoh ini, fungsi bernama function_1 dikonfigurasikan untuk secara otomatis menskalakan masuk dan keluar, dengan zona waktu diatur ke Asia/Shanghai (UTC+8). Konfigurasi ini mulai berlaku dari 10:00:00 pada 1 Agustus 2024, hingga 10:00:00 pada 30 Agustus 2024 (UTC+8). Selama periode ini, jumlah instans yang disediakan ditingkatkan menjadi 50 pada pukul 20:00 (UTC+8) dan dikurangi menjadi 10 pada pukul 22:00 (UTC+8) setiap hari.

"scheduledActions": [
    {
      "name": "scale_up_action",
      "startTime": "2024-08-01T10:00:00",
      "endTime": "2024-08-30T10:00:00",
      "target": 50,
      "scheduleExpression": "cron(0 0 20 * * *)",
      "timeZone": "Asia/Shanghai"
    },
    {
      "name": "scale_down_action",
      "startTime": "2024-08-01T10:00:00",
      "endTime": "2024-08-30T10:00:00",
      "target": 10,
      "scheduleExpression": "cron(0 0 22 * * *)",
      "timeZone": "Asia/Shanghai"
    }
  ]

Tabel berikut menjelaskan parameter dalam potongan kode.

Parameter

Deskripsi

name

Nama tugas penjadwalan penskalaan.

startTime

Waktu ketika kebijakan penskalaan mulai berlaku. Sistem secara default menggunakan UTC jika Anda tidak menentukan zona waktu.

endTime

Waktu ketika kebijakan penskalaan kedaluwarsa. Sistem secara default menggunakan UTC jika Anda tidak menentukan zona waktu.

target

Jumlah target instans yang disediakan.

scheduleExpression

Informasi jadwal. Sistem secara default menggunakan UTC jika Anda tidak menentukan zona waktu.

Format berikut didukung:

  • At expressions - "at(yyyy-mm-ddThh:mm:ss)": menjalankan tugas terjadwal hanya sekali.

    Sebagai contoh, jika Anda ingin menjalankan tugas terjadwal pada pukul 20:00 tanggal 1 April 2024 (UTC+8), atur zona waktu ke Asia/Shanghai dan konfigurasikan parameter ini menjadi at(2024-04-01T20:00:00).

  • Cron expressions - "cron(0 0 4 * * *)": menjalankan tugas terjadwal beberapa kali. Atur nilainya dalam format crontab standar.

    Sebagai contoh, jika Anda ingin menjalankan tugas terjadwal pada pukul 20:00 (UTC+8) setiap hari, atur zona waktu ke Asia/Shanghai dan konfigurasikan parameter ini menjadi cron(0 0 20 * * *).

timeZone

Zona waktu yang ditentukan.

Ekspresi Cron

Tabel berikut menjelaskan bidang ekspresi cron dalam format Detik Menit Jam Hari-bulan Bulan Hari-minggu.

Bidang

Nilai valid

Karakter khusus yang diizinkan

Detik

0 hingga 59

Tidak ada

Menit

0 hingga 59

, - * /

Jam

0 hingga 23

, - * /

Hari-bulan

1 hingga 31

, - * ? /

Bulan

1 hingga 12 atau JAN hingga DEC

, - * /

Hari-minggu

1 hingga 7 atau MON hingga SUN

, - * ?

Tabel berikut menjelaskan karakter khusus dalam ekspresi cron.

Karakter

Deskripsi

Contoh

*

Menunjukkan apa saja atau setiap.

Dalam bidang Menit, 0 menunjukkan bahwa tugas dijalankan pada awal setiap menit.

,

Menentukan daftar nilai.

Dalam bidang Hari-minggu, MON, WED, FRI menunjukkan setiap Senin, Rabu, dan Jumat.

-

Menentukan rentang.

Dalam bidang Jam, 10-12 menunjukkan rentang waktu dari 10:00 hingga 12:00 di zona waktu yang Anda tentukan.

?

Menunjukkan nilai yang tidak pasti.

Karakter ini digunakan bersama dengan nilai yang ditentukan. Misalnya, ketika Anda menentukan tanggal tanpa mengikatnya ke hari tertentu dalam seminggu, Anda dapat menggunakan karakter ini di bidang Hari-minggu.

/

Menentukan penambahan. n/m menunjukkan penambahan m mulai dari posisi n.

Dalam bidang Menit, 3/5 menunjukkan bahwa tugas dijalankan setiap 5 menit mulai dari menit ketiga.

Penskalaan berbasis ambang batas

Skenario

Setelah Anda mengonfigurasi kebijakan penskalaan berbasis ambang batas, Function Compute secara berkala mengumpulkan metrik konkurensi atau pemanfaatan sumber daya untuk instans yang disediakan. Metrik ini, bersama dengan jumlah minimum dan maksimum instans yang disediakan yang Anda tentukan, digunakan untuk mengontrol penskalaan instans, memastikan jumlah instans sesuai dengan penggunaan sumber daya aktual.

Konfigurasi sampel

Gambar berikut menunjukkan contoh penskalaan otomatis berdasarkan pemanfaatan konkurensi instans. Ketika volume lalu lintas meningkat, ambang batas scale-out terpicu dan Function Compute mulai meningkatkan jumlah instans yang disediakan. Scale-out berhenti ketika jumlah mencapai batas atas yang Anda tetapkan. Permintaan tambahan dikirim ke instans on-demand untuk diproses.

Catatan
  • Untuk mengonfigurasi kebijakan penskalaan berbasis ambang batas, Anda harus terlebih dahulu mengaktifkan pengumpulan metrik tingkat instans. Jika tidak, kesalahan 400 InstanceMetricsRequired akan dilaporkan. Untuk informasi lebih lanjut, lihat Aktifkan Pengumpulan Metrik Tingkat Instans.

  • Metrik pemanfaatan konkurensi hanya mencakup konkurensi instans yang disediakan, tidak termasuk instans on-demand.

  • Metrik pemanfaatan konkurensi mengevaluasi rasio permintaan konkuren yang ditangani oleh instans yang disediakan terhadap jumlah maksimum permintaan konkuren yang dapat ditangani oleh semua instans yang disediakan. Nilai metrik berkisar dari 0 hingga 1.

Potongan kode berikut menunjukkan cara memanggil operasi PutProvisionConfig untuk mengonfigurasi kebijakan penskalaan berbasis ambang batas. Dalam contoh ini, fungsi bernama function_1 dikonfigurasikan untuk secara otomatis menskalakan masuk dan keluar berdasarkan metrik ProvisionedConcurrencyUtilization, yang melacak pemanfaatan konkurensi instans yang disediakan. Zona waktu diatur ke Asia/Shanghai (UTC+8). Konfigurasi ini mulai berlaku dari 10:00:00 pada 1 Agustus 2024, hingga 10:00:00 pada 30 Agustus 2024 (UTC+8). Selama periode ini, ketika pemanfaatan konkurensi melebihi 60%, jumlah instans yang disediakan ditingkatkan, hingga maksimum 100. Sebaliknya, ketika pemanfaatan konkurensi turun di bawah 60%, jumlah instans yang disediakan dikurangi, hingga minimum 10.

"targetTrackingPolicies": [
    {
      "name": "action_1",
      "startTime": "2024-08-01T10:00:00",
      "endTime": "2024-08-30T10:00:00",
      "metricType": "ProvisionedConcurrencyUtilization",
      "metricTarget": 0.6,
      "minCapacity": 10,
      "maxCapacity": 100,
      "timeZone": "Asia/Shanghai"
    }
  ]

Tabel berikut menjelaskan parameter dalam potongan kode.

Parameter

Deskripsi

name

Nama tugas penskalaan berbasis ambang batas.

startTime

Waktu ketika kebijakan penskalaan mulai berlaku. Sistem secara default menggunakan UTC jika Anda tidak menentukan zona waktu.

endTime

Waktu ketika kebijakan penskalaan kedaluwarsa. Sistem secara default menggunakan UTC jika Anda tidak menentukan zona waktu.

metricType

Metrik yang dilacak. Dalam contoh ini, nilainya diatur ke ProvisionedConcurrencyUtilization.

metricTarget

Ambang batas yang memicu autoscaling.

minCapacity

Jumlah minimum instans yang disediakan yang diizinkan.

maxCapacity

Jumlah maksimum instans yang disediakan yang diizinkan.

timeZone

Zona waktu yang ditentukan.

Prinsip penskalaan

Ketika penskalaan masuk instans terpicu, Function Compute secara bertahap mengurangi jumlah instans yang disediakan berdasarkan koefisien penskalaan masuk yang berkisar dari 0 (tidak termasuk) hingga 1. Koefisien penskalaan masuk adalah parameter sistem yang digunakan untuk memperlambat kecepatan penskalaan masuk. Ini tidak memerlukan konfigurasi manual. Nilai target untuk tugas penskalaan adalah bilangan bulat terkecil yang lebih besar dari atau sama dengan hasil perhitungan berikut:

  • Nilai target scale-out = Instans yang disediakan saat ini × (Nilai metrik saat ini / Ambang batas pemanfaatan yang ditentukan)

  • Nilai target scale-in = Instans yang disediakan saat ini × Koefisien penskalaan masuk × (1 - Nilai metrik saat ini / Ambang batas pemanfaatan yang ditentukan)

Contoh berikut menunjukkan cara menghitung nilai target scale-out. Demikian pula, nilai target scale-in dapat ditentukan menggunakan prinsip dan rumus yang disebutkan sebelumnya.

Jika nilai metrik saat ini adalah 80%, ambang batas pemanfaatan yang ditentukan adalah 40%, dan jumlah instans yang disediakan saat ini adalah 100, maka jumlah target instans dihitung sebagai berikut: 100 × (80% / 40%) = 200. Jumlah instans yang disediakan ditingkatkan menjadi 200 (selama tidak melebihi maksimum yang diizinkan) untuk memastikan pemanfaatan tetap sekitar 40%.

Contoh

Contoh berikut menjelaskan bagaimana nilai target yang ditentukan oleh parameter defaultTarget dan kebijakan penjadwalan penskalaan menentukan jumlah instans yang disediakan pada waktu tertentu. Dalam contoh ini, parameter defaultTarget diatur ke 5, dan dua kebijakan penjadwalan penskalaan dikonfigurasikan, menggunakan zona waktu Asia/Shanghai (UTC+8). Konfigurasi ini mulai berlaku dari 10:00:00 pada 9 Januari 2025, hingga 00:00:00 pada 11 Januari 2025 (UTC+8). Selama periode ini, jumlah instans yang disediakan ditingkatkan menjadi 20 pada pukul 10:00 (UTC+8) dan dikurangi menjadi 10 pada pukul 22:00 (UTC+8) setiap hari. Potongan kode berikut menunjukkan isi dari kebijakan penskalaan:

{
    "defaultTarget": 5,
    "scheduledActions": [
        {
            "name": "scale_up_action",
            "startTime": "2025-01-09T10:00:00",
            "endTime": "2025-01-11T00:00:00",
            "target": 20,
            "scheduleExpression": "cron(0 0 10 * * *)",
            "timeZone": "Asia/Shanghai"
        },
        {
            "name": "scale_down_action",
            "startTime": "2025-01-09T10:00:00",
            "endTime": "2025-01-11T00:00:00",
            "target": 10,
            "scheduleExpression": "cron(0 0 22 * * *)",
            "timeZone": "Asia/Shanghai"
        }
    ]
}

Gambar berikut menggambarkan perubahan jumlah instans yang disediakan seiring waktu:

Konkurensi maksimum

Jumlah maksimum permintaan konkuren yang dapat ditangani oleh semua instans yang disediakan, atau konkurensi maksimum, ditentukan oleh pengaturan konkurensi instans.

  • Setiap instans memproses satu permintaan pada satu waktu

    Konkurensi maksimum = Jumlah instans

  • Setiap instans memproses beberapa permintaan pada satu waktu

    Konkurensi maksimum = Jumlah instans × Jumlah permintaan yang diproses secara bersamaan oleh sebuah instans

Untuk informasi lebih lanjut tentang skenario, manfaat, konfigurasi, dan dampak fitur konkurensi instans, lihat Konfigurasikan Konkurensi Instans.

Referensi

  • Untuk informasi lebih lanjut tentang konsep dasar dan metode penagihan mode on-demand dan provisioned, lihat Jenis Instans dan Mode Penggunaan.

  • Untuk informasi lebih lanjut tentang cara meningkatkan pemanfaatan sumber daya instans yang disediakan, lihat Konfigurasikan Instans yang Disediakan.

  • Secara default, semua fungsi dalam akun Alibaba Cloud di wilayah yang sama berbagi batasan penskalaan yang sama. Untuk informasi lebih lanjut tentang cara membatasi jumlah instans untuk fungsi tertentu, lihat Tentukan Jumlah Maksimum Instans. Ketika jumlah instans yang berjalan melebihi maksimum yang ditentukan, Function Compute mengembalikan kesalahan throttling.