All Products
Search
Document Center

Microservices Engine:Skalakan aplikasi SchedulerX hingga 100.000+ pekerjaan periodik

Last Updated:Mar 11, 2026

Setiap aplikasi SchedulerX mendukung hingga 1.000 pekerjaan secara default. Ketika beban kerja Anda memerlukan puluhan ribu pekerjaan periodik yang dijadwalkan secara individual—masing-masing dengan waktu pemicunya sendiri—batas ini menjadi penghambat. SchedulerX menyediakan fitur auto scaling dan shared container pool untuk menghilangkan batasan 1.000 pekerjaan tanpa membebani agent.

Kapan Anda memerlukan pekerjaan periodik individual

Setiap pekerjaan periodik dalam SchedulerX berjalan sesuai jadwalnya sendiri. Pekerjaan terdistribusi MapReduce tidak dapat menggantikan pekerjaan periodik individual karena semua tugas dalam satu pekerjaan MapReduce dieksekusi secara bersamaan. Skenario berikut biasanya memerlukan 10.000 hingga 100.000+ pekerjaan mandiri:

ScenarioWhy individual jobs are neededScale
IoT device controlSetiap sakel Internet of Things (IoT) menyalakan atau mematikan perangkat pada waktu yang berbeda. Satu pekerjaan mandiri per sakel.10.000–100.000+ pekerjaan
Alert rule evaluationSistem pemantauan mengevaluasi aturan alert sekali per menit. Aturan kompleks membutuhkan waktu lebih lama dan dapat menghambat siklus pemicu berikutnya. Satu pekerjaan mandiri per aturan mencegah aturan lambat menunda yang lain.10.000–100.000+ pekerjaan
Enterprise scheduling platformSebuah tim membangun platform penjadwalan internal di atas SchedulerX dan menyediakan API PoP untuk pembuatan pekerjaan. Seiring adopsi meningkat, jumlah total pekerjaan mencapai 100.000+.100.000+ pekerjaan

Cara kerja auto scaling dan shared container pool

Dua mekanisme ini bekerja sama untuk mendukung jumlah pekerjaan yang tinggi:

Auto scaling — Saat jumlah pekerjaan suatu aplikasi mencapai batas 1.000, SchedulerX secara otomatis membuat sub-aplikasi. Hal ini mendistribusikan pekerjaan ke beberapa aplikasi logis sekaligus tetap memungkinkan pengelolaan terpadu. Anda tidak perlu mengelola sub-aplikasi secara manual.

Shared container pool — Secara default, setiap pemicu pekerjaan mengalokasikan container pool-nya sendiri untuk eksekusi. Pada skenario dengan lebih dari 10.000 pekerjaan, hal ini dengan cepat menghabiskan memori dan CPU agent, sehingga agent menjadi tidak responsif. Dengan mengaktifkan shared container pool, semua pekerjaan dapat berbagi satu container pool, sehingga konsumsi sumber daya tetap terkendali terlepas dari jumlah pekerjaan.

Without shared pool (default):          With shared pool:
Job 1 trigger → Container pool 1       Job 1 trigger ─┐
Job 2 trigger → Container pool 2       Job 2 trigger ──┤
Job 3 trigger → Container pool 3       Job 3 trigger ──┼→ Shared container pool (size: 128)
  ...               ...                  ...            │
Job N trigger → Container pool N       Job N trigger ─┘
  → Agent memory exhausted               → Bounded resource usage

Aktifkan auto scaling dan shared container pool

Prosedur berikut menggunakan aplikasi Spring Boot sebagai contoh. Untuk jenis aplikasi lain, lihat Quick start > Connect an agent to SchedulerX.

Langkah 1: Ajukan permintaan auto scaling

Fitur auto scaling tidak tersedia secara self-service. Hubungi SchedulerX technical support untuk mengaktifkannya pada aplikasi Anda.

Setelah auto scaling diaktifkan, SchedulerX akan membuat sub-aplikasi setiap kali jumlah pekerjaan suatu aplikasi mencapai 1.000.

Langkah 2: Verifikasi versi agent

Buka file pom.xml Anda dan pastikan versi dependensi agent SchedulerX adalah 1.2.1 atau lebih baru.

Penting

Versi agent sebelum 1.2.1 tidak mendukung shared container pool. Jika versi Anda lebih lama, perbarui nomor versi dalam deklarasi dependensi sebelum melanjutkan.

Langkah 3: Aktifkan shared container pool

Tambahkan properti berikut ke file konfigurasi Spring Boot Anda (misalnya, application.properties):

# Aktifkan shared container pool agar semua pekerjaan menggunakan satu pool yang sama
spring.schedulerx2.shareContainerPool=true

# Tetapkan ukuran container pool
spring.schedulerx2.sharePoolSize=128
PropertyDescription
spring.schedulerx2.shareContainerPoolJika diatur ke true, semua pekerjaan berbagi satu container pool alih-alih masing-masing membuat pool-nya sendiri.
spring.schedulerx2.sharePoolSizeMenentukan ukuran shared container pool. Nilai contoh adalah 128.
Penting

Tanpa shared container pool yang diaktifkan, setiap pemicu pekerjaan membuat container pool-nya sendiri. Pada skenario dengan lebih dari 10.000 pekerjaan, hal ini dengan cepat menghabiskan memori dan CPU agent, sehingga agent menjadi tidak responsif.

Praktik terbaik produksi

Sesuaikan ukuran pool

Mulailah dengan ukuran pool 128 seperti pada contoh konfigurasi, lalu pantau penggunaan CPU dan memori agent. Sesuaikan ukuran tersebut berdasarkan karakteristik pekerjaan dan konsumsi sumber daya Anda.

Sebarkan jadwal pekerjaan

Hindari mengelompokkan waktu pemicu pada detik yang sama. Saat ribuan pekerjaan menggunakan ekspresi CRON yang identik (misalnya, 0 * * * * ? untuk setiap menit pada detik ke-0), semuanya dijalankan secara bersamaan dan menciptakan lonjakan beban pada agent.

Sebarkan ekspresi CRON ke detik yang berbeda:

# Alih-alih semua pekerjaan pada detik ke-0:
0 * * * * ?    # Semua 10.000 pekerjaan dijalankan pada :00

# Sebarkan ke 60 detik:
0 * * * * ?    # Pekerjaan 1–167 dijalankan pada :00
1 * * * * ?    # Pekerjaan 168–334 dijalankan pada :01
2 * * * * ?    # Pekerjaan 335–501 dijalankan pada :02
...
59 * * * * ?   # Pekerjaan 9834–10000 dijalankan pada :59

Hal ini mendistribusikan beban lebih merata sepanjang waktu dan mengurangi beban konkuren puncak pada agent.

Pantau pembuatan sub-aplikasi

Periksa Konsol SchedulerX secara berkala untuk memastikan sub-aplikasi dibuat sesuai harapan saat jumlah pekerjaan bertambah.

Tangani kegagalan eksekusi pekerjaan

Pada jumlah pekerjaan yang tinggi, kegagalan pekerjaan individual merupakan hal yang wajar. Rancang pekerjaan Anda agar bersifat idempotent sehingga retry tidak menghasilkan efek samping duplikat. Konfigurasikan nilai timeout yang sesuai untuk mencegah pekerjaan lambat menghambat shared container pool.

Kuota dan batasan

ItemValueNotes
Pekerjaan per aplikasi (sebelum auto scaling)1.000Gunakan auto scaling untuk melampaui batas ini
Versi agent minimum untuk shared container pool1.2.1Versi sebelumnya tidak mendukung fitur ini
Ukuran shared container pool (konfigurasi contoh)128Dapat dikonfigurasi melalui properti sharePoolSize
Untuk mengaktifkan auto scaling dan meningkatkan jumlah total pekerjaan melebihi 1.000, hubungi SchedulerX technical support.

Topik terkait