ODPS-0123144

本文为您介绍错误码ODPS-0123144:Fuxi job failed的报错场景,并提供对应的解决方案。

错误:kInstanceMonitorTimeout(errCode:252) at Odps/xxx/xxx. Detail error msg: CRASH_EXIT, usually caused by bad udf performance

错误信息

ODPS-0123144: Fuxi job failed - kInstanceMonitorTimeout(errCode:252) at Odps/xxx/xxx. Detail error msg: CRASH_EXIT, usually caused by bad udf performance.

错误码描述

MaxCompute UDF处理时间过长导致超时。默认情况下UDF处理数据的时间是有限制,在处理一批(通常情况下为1024条)记录时,必须在1800秒内处理完。这个时间限制并不是针对Worker的总运行时间,而是处理一小批记录的时间。通常情况下SQL处理数据的速率超过了万条/秒,该限制只是为了防止MaxCompute UDF中出现死循环,导致长时间占用CPU资源的情况。

解决方案

如果用的PyODPS在MaxCompute UDF代码中增加日志,用于检查代码中是否有死循环问题,或者可以在日志里打印时间信息来检查MaxCompute UDF处理单条数据的时长是否符合预期。代码中需要增加如下打印日志相关信息,作业运行成功后,您可以在Logview的StdOut中获取到日志信息。

如果用的Java UDF可以参考性能问题

  • Python 2环境

    sys.stdout.write('your log')
    sys.stdout.flush()
  • Python 3环境

    print('your log', flush=True)

如果实际计算量很大,MaxCompute UDF预计的运行时间很长,您可以通过调整如下参数避免超时报错。

参数

说明

set odps.function.timeout=xxx;

调整UDF运行超时时长。默认值为1800s。可根据实际情况酌情调大。取值范围为1s~3600s。

set odps.sql.executionengine.batch.rowcount=xxx;

调整MaxCompute一次处理的数据行数。默认值为1024行。可根据实际情况酌情调小。