Saat periode penjadwalan puncak, lonjakan pekerjaan yang dimulai secara bersamaan dapat membebani sumber daya backend dan menyebabkan kegagalan. SchedulerX menyediakan dua mekanisme untuk mencegah hal ini:
Concurrency limiting — Batasi jumlah pekerjaan yang berjalan secara bersamaan dalam satu aplikasi. Pekerjaan berlebih akan masuk ke antrian secara otomatis alih-alih dibuang.
Priority-based preemption — Tetapkan prioritas pada pekerjaan sehingga pekerjaan dengan prioritas lebih tinggi dijalankan terlebih dahulu dibandingkan pekerjaan berprioritas lebih rendah ketika slot antrian tersedia.
Gunakan kedua mekanisme ini secara terpisah atau gabungkan keduanya untuk membangun priority queue yang menjaga stabilitas sistem sekaligus memastikan pekerjaan penting dijalankan terlebih dahulu.
Kapan menggunakan masing-masing mekanisme
| Skenario | Pendekatan yang direkomendasikan | Mengapa |
|---|---|---|
| Ratusan pekerjaan batch harian dimulai pukul 00.00 dan membebani sistem | Hanya concurrency limiting | Meratakan eksekusi dengan mengantrekan pekerjaan berlebih |
| Sinkronisasi data real-time harus dijalankan sebelum laporan harian | Concurrency limiting + priority-based preemption | Pekerjaan berprioritas tinggi menggantikan pekerjaan berprioritas rendah dalam antrian |
| Penjadwalan burst selama jam sibuk, tetapi setiap pekerjaan selesai dengan cepat | Hanya concurrency limiting | Mencegah kehabisan sumber daya tanpa menambah kompleksitas prioritas |
| Workload campuran di mana beberapa pekerjaan sensitif terhadap waktu dan yang lain tidak | Concurrency limiting + priority-based preemption | Menjamin pekerjaan yang sensitif terhadap waktu mendapatkan slot berikutnya yang tersedia |
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kelompok aplikasi SchedulerX. Lihat Create an application group
Setidaknya satu pekerjaan yang telah dibuat dalam kelompok aplikasi tersebut
Tetapkan batas konkurensi untuk aplikasi
Batasi jumlah pekerjaan yang berjalan secara konkuren dalam satu aplikasi. Ketika batas tercapai, pekerjaan baru akan menunggu dalam antrian dan tidak dibuang.
Buka kelompok aplikasi Anda dan buka bagian Advanced Configuration.
Aktifkan Flow Control. Secara default, Flow Control dinonaktifkan.
Tetapkan parameter Number of concurrent task instances ke jumlah maksimum pekerjaan yang dapat berjalan secara bersamaan.

Untuk memverifikasi konfigurasi, buat tiga pekerjaan dalam kelompok aplikasi, lalu klik Run once di kolom Operation untuk setiap pekerjaan.

Di panel navigasi sebelah kiri, klik Instances, lalu klik tab Task instance List. Pekerjaan pertama yang dipicu (hello_jobA) sedang berjalan. Pekerjaan lainnya (hello_jobB dan hello_jobC) menunggu dalam antrian.
Setelah hello_jobA selesai, hello_jobB secara otomatis berpindah dari antrian ke slot eksekusi.
Siapkan priority-based preemption
Gabungkan batas konkurensi dengan prioritas pekerjaan sehingga pekerjaan berprioritas lebih tinggi menggantikan pekerjaan berprioritas lebih rendah ketika slot antrian tersedia.
Cara kerja priority preemption
Mekanisme ini mengikuti prinsip yang sama dengan Yet Another Resource Negotiator (YARN) priority queues, di mana sumber daya dialokasikan berdasarkan tingkat prioritas pekerjaan.

Ketika beberapa pekerjaan dalam antrian dan sebuah slot tersedia, SchedulerX memilih pekerjaan dengan prioritas tertinggi—bukan pekerjaan yang dikirim pertama kali.
Tetapkan prioritas dan uji preemption
Tetapkan prioritas untuk setiap pekerjaan. Pekerjaan dengan prioritas lebih tinggi dijadwalkan terlebih dahulu dalam aplikasi yang sama.

Aktifkan Flow Control untuk aplikasi (misalnya,
dts-all.hxm) dan atur Number of concurrent task instances menjadi1sehingga hanya satu pekerjaan yang berjalan dalam satu waktu. Kemudian, buat tiga pekerjaan dengan prioritas tinggi, menengah, dan rendah.
Picu pekerjaan dalam urutan berikut: prioritas menengah, prioritas rendah, prioritas tinggi.
Klik Instances di panel navigasi sebelah kiri, lalu klik tab Task instance List. Karena tidak ada pekerjaan dalam antrian saat pekerjaan berprioritas menengah dipicu, pekerjaan tersebut langsung dijalankan.
Setelah pekerjaan berprioritas menengah selesai dan slot tersedia, pekerjaan berprioritas tinggi menggantikan pekerjaan berprioritas rendah dan dijalankan berikutnya—meskipun pekerjaan berprioritas rendah dikirim lebih awal.
Catatan penggunaan
Throttling berbasis antrian paling efektif untuk skenario burst scheduling di mana banyak pekerjaan dipicu dalam jendela waktu singkat. Jika aplikasi Anda terus-menerus menjadwalkan pekerjaan setiap menit dengan workload berat, antrian dapat menumpuk. Untuk penjadwalan frekuensi tinggi, gunakan throttling sisi client atau tingkatkan kapasitas pemrosesan Anda sebagai gantinya.
Pengaturan prioritas berlaku hanya dalam satu aplikasi. Pekerjaan berprioritas tinggi di satu aplikasi tidak memengaruhi penjadwalan pekerjaan di aplikasi lain.
FAQ
Apakah pengaturan prioritas di aplikasi saya memengaruhi aplikasi lain?
Tidak. Prioritas pekerjaan hanya berlaku dalam aplikasi tempat pengaturan tersebut dikonfigurasi. Pengaturan ini tidak berdampak pada penjadwalan di aplikasi lain.
Haruskah saya menggunakan throttling berbasis antrian untuk pekerjaan yang berjalan setiap menit?
Tidak, jika workload per menitnya secara konsisten berat. Throttling berbasis antrian dirancang untuk skenario burst di mana lonjakan pekerjaan mengenai sistem sekaligus. Untuk pekerjaan per menit dengan volume tinggi yang berkelanjutan, gunakan throttling sisi client atau tingkatkan infrastruktur pemrosesan Anda agar sesuai dengan beban tersebut.