This topic describes the error scenario for ODPS-0123144 (Fuxi job failed) and provides solutions.
kInstanceMonitorTimeout(errCode:252) at Odps/xxx/xxx. Detail error msg: CRASH_EXIT, usually caused by bad udf performance
Error message
ODPS-0123144: Fuxi job failed - kInstanceMonitorTimeout(errCode:252) at Odps/xxx/xxx. Detail error msg: CRASH_EXIT, usually caused by bad udf performance.
Error description
A MaxCompute User-Defined Function (UDF) exceeded the per-batch processing time limit and timed out.
By default, a UDF must finish processing a batch of records — typically 1,024 rows — within 1,800 seconds. This limit applies to each small batch, not to the total worker runtime. Under normal conditions, SQL processes data at over 10,000 records per second. The limit prevents an infinite loop in a UDF from occupying CPU resources indefinitely.
Solution
Choose one of the following approaches based on your situation.
If the UDF may contain an infinite loop, add logging to diagnose the issue. After the job runs, retrieve the log output from the StdOut tab in Logview.
For Java UDFs, see Performance issues.
For Python UDFs, add the following logging statements to your UDF code:
-
Python 2
sys.stdout.write('your log') sys.stdout.flush() -
Python 3
print('your log', flush=True)
If the UDF workload is large and processing time is expected to be long, adjust the following parameters to avoid the timeout error:
-
set odps.function.timeout=xxx;
Sets the UDF execution timeout. Default: 1800s. Range: 1s–3600s. Increase this value if your UDF requires more processing time per batch.
-
set odps.sql.executionengine.batch.rowcount=xxx;
Sets the number of rows MaxCompute processes per batch. Default: 1024. Reduce this value to lower the per-batch processing time.