Pemecahan Masalah / Timeout Eksekusi Fungsi
Timeout eksekusi fungsi dapat terjadi karena berbagai kemungkinan, sehingga perlu diidentifikasi berdasarkan situasi yang berbeda.
1. Menjalankan Fungsi yang Terlalu Lama di Editor UI DataFlux Func
Untuk melindungi sistem, saat menjalankan fungsi di editor DataFlux Func, sistem akan mengabaikan konfigurasi timeout, dan batas waktu yang ditetapkan adalah 60 detik.
Ketika waktu eksekusi fungsi melebihi batas waktu, sistem akan langsung menghentikan (Kill) proses dan melempar error seperti berikut:
| Text Only | |
|---|---|
1 2 3 4 | |
| Kemungkinan Penyebab | Solusi |
|---|---|
| Fungsi yang dieksekusi berjalan melebihi batas 60 detik | Eksekusi fungsi di editor terutama untuk pengembangan/debugging, sebaiknya gunakan dataset dan jumlah permintaan yang lebih kecil Jangan langsung menjalankan tugas berdurasi panjang secara penuh |
2. Proses worker di-kill karena eksekusi fungsi terlalu lama
Untuk melindungi sistem, DataFlux Func membatasi waktu maksimum eksekusi fungsi dan tidak mengizinkannya berjalan tanpa batas. Setelah melebihi batas waktu tertentu, proses eksekusi akan langsung di-kill.
Secara spesifik, gejalanya adalah:
- Dalam log eksekusi tugas, teramati adanya error yang mengandung
TaskTimeout, seperti:
| Text Only | |
|---|---|
1 2 3 4 | |
- Memanggil API Fungsi mengembalikan kode status
599, dengan data respons yang mengandungEFuncTimeout(biasanya juga berisi informasiTaskTimeout) seperti berikut:
| JSON | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Di sini, field reqCost adalah waktu yang berlalu sejak fungsi mulai dieksekusi hingga di-kill (dalam milidetik).
Kemungkinan penyebab dan solusi:
| Kemungkinan Penyebab | Solusi |
|---|---|
Fungsi yang dieksekusi tidak menentukan parameter timeout, tetapi fungsi berjalan melebihi batas waktu default |
Hubungi pengembang fungsi untuk memeriksa kesalahan, termasuk namun tidak terbatas pada: Parameter timeout disetel terlalu singkat Respons sistem eksternal yang dipanggil dalam fungsi terlalu lambat |
Fungsi yang dieksekusi menentukan parameter timeout (detik), dan fungsi berjalan melebihi batas waktu |
Sama seperti di atas |
Batas waktu fungsi defaultnya 30 detik, dan pengaturan maksimalnya 3600 detik