定时调度任务 FAQ

  • 文档创建者:Wendy123456
  • 编辑次数:5次
  • 最近更新:Wendy123456 于 2020-05-12
  • 1. 概述

    本文介绍 定时调度任务 中一些报错及解决方案。

    2. 示例

    2.1 邮件正文空格显示问题

    问题描述:

    邮件正文内容中的多个空格被合并为一个,行首空格不显示。

    解决方案:

    邮件正文中若需在行首输入空格,或在行内连续输入多个空格时,要将这些空格替换为同等数量的「 」。如下图所示:

    1571110858914828.png

    2.2 结果链接无法正常跳转

    问题描述:

    设置定时任务发送邮件时,在「邮件通知」中勾选了正文加上结果链接,点击邮件中的结果链接,出现图一或图二的报错,报错内容:非常抱歉,您无法查看该页面

    如下图所示:

    28.png

    原因分析:

    可能是用户在「调度对象」步骤中勾选了任务结束即清理 。

    解决方案:

    取消勾选任务结束即清理,勾选仅保留最近一次仅保留最近5次不清理自定义中任意一个即可。

    2.3 SMTP 服务器报错

    问题描述:

    定时任务发送邮件,收件人数量较多时,SMTP 服务器报错,报错内容中含 too many recipients 字样, 如下图所示:

    01.png

    原因分析:

    平台负责将邮件信息(收件人、抄送、密送、主题、正文等)发送给 SMTP 服务器,由 SMTP 服务器根据这些信息发送邮件,平台本身并不进行实际邮件的发送;

    造成该报错的实际原因为「收件人」或「抄送」或「密送」的邮箱数量超过了 SMTP 服务器的限制,不同的 SMTP 服务器所限制的数量可能不一样。

    解决方案

    方案一:减少默认用户组中用户的数量,由于不同的 SMTP 服务器所限制的数量可能不一样,建议用户数量在 500 以内。

    方案二:提高 SMTP 服务器对收件人的限制,需要客户方的 SMTP 服务器管理人员做修改,由于不同的 SMTP 服务器修改方式不相同,本文暂不提供修改方法。

    2.4 迁移 FineDB 数据库后邮件发送失败

    问题描述:

    定时任务发送邮件,没有「运行监控」,也没有收到短信,后台报错:

    couldn't store job:Packet for query is too large (35045785>4194304).You can change this value on the server by setting the max_allowed_packet' variable.

    如下图所示:

    12.png

    原因分析:

    用户将内置 FineDB 数据库迁移到本地 MySQL 数据库中,本地 MySQL 数据库中 max_allowed_packet 值设置过小导致单个记录超过限制后写入数据库失败,且后续记录写入也会失败。

    解决方案:

    方案一:

    MySQL 安装目录下的「my.ini」文件中的[mysqld] 字段中的「max_allowed_packet = 1M」修改为 500M ,重启 MySQL 即可。

    方案二:

    1)使用 set global max_allowed_packet = 524288000;  语句将max_allowed_packet 的值设置为 500 M;

    2)使用 show VARIABLES like '%max_allowed_packet%';  语句查看是否修改成功。

    2.5 超时报错

    问题描述:

    定时调度发送邮件失败,报错如下所示:

    com.fr.restriction.MemoryAlarmException:很抱歉,sql 执行时间过长触发保护机制,请稍后重试。若您是管理员,可于智能运维-内存管理-模板限制中更改此项限制。

    解决方案:

    关闭所有 模板限制

    2.6 无效邮箱导致所有邮件发送失败

    问题描述:

    定时调度发送邮件任务执行后,执行失败并报错 Invalid Addresses ,且所有收件人都收不到该邮件。

    原因分析:

    定时调度收件人中存在无效邮箱(格式正确但注销或不存在的邮箱)。

    解决方案:

    在「调度对象」步骤中,勾选除通用结果外,根据默认用户组内的用户单独生成结果 按钮。

    注:若「抄送人」中存在自定义无效邮箱,也会导致所有邮箱发送失败。

    2.7 数据连接超时导致邮件发送失败

    问题描述:

    定时调度发送邮件提示数据集配置错误,小部分用户收不到邮件,但单独发送给用户可以发送成功。

    原因分析:

    可能由于网络繁忙或者其他原因,导致数据连接需要的时间过长,超过这个等待时间邮件发送会失败。

    解决方案:

    以管理员身份进入数据决策系统,点击管理系统>数据连接,进入定时调度任务中模板使用的数据连接,增大「高级设置」下的最大等待时间

    示例如下图所示:

    6.png

    2.8 定时调度任务超时失败

    问题描述:

    定时调度任务执行时间超过 5 分钟,定时调度任务监控列表中显示失败,且报错:java.util.concurrent.TimeoutException

    原因分析:

    5 分钟的失败日志只是个超时提醒,任务实际还在执行。

    解决方案:

    任务执行正常,则不必理会该超时报错。

    1)若不希望显示这个报错,可在fine_conf_entity表中修改ScheduleSettingConfig.taskTimeout字段值,根据任务的实际执行情况调高该超时阈值来延后超时提醒,该配置项单位为毫秒。

    注:如果配了 Nginx 等转发,不可超过 Nginx 内配置的转发超时时间。

    2)2020-01-15及之后的 JAR,若需要彻底取消该提示,可在fine_conf_entity表中修改ScheduleSettingConfig.timeoutRemind字段值为false,取消超时检查和提醒,但不影响任务本身的执行流程。

    注:修改 FineDB 数据库表字段值的方法请参考 报表内置 HSQL 数据库 FineDB

    附件列表


    主题: 数据决策系统
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!