1. 概述
本文将介绍 定时调度任务设置 中选择了 FVS 模板后的一些常见报错及解决方案。
2. FVS导出截图无自适应效果
FVS 可视化看板定时调度导出附件存档类型为 pdf、PPT 时,设置的画布自适应效果无效。
原因分析:
导出截图是按固定大小 1920*1080 导出的,且按照不自适应展示。
解决方案:
添加 width 和 height 参数,设置宽高为实际画布尺寸,即可正常展示模板内容。

3. FVS导出截图不全
问题描述:
FVS 可视化看板定时调度导出时,有可能出现截图页面展示不全的问题。如下图所示:

原因分析:
可能是由于定时调度导出时模板的渲染时间小于模板实际加载时间,部分渲染未完成而导致。
解决方案:
1)升级 FVS 插件至 V2.8.1 及之后版本,再通过「fine_conf_entity可视化配置插件」修改定时调度模板加载时间。
FVSConfig.fvsSchedulePageLoadingTimeLimit 的参数值默认为 60,单位秒。定时调度场景下需要调整至更大值。
2)若模板加载结束之后如仍有部分图表未完全加载,可修改图表渲染的时间。
FVSConfig.fvsSchedulePageLoadingDelayTime 的参数值默认为 2,单位秒。可设置为10,以保证图表加载完全。
3)重启服务器后设置生效。
注:修改 FineDB 数据库表字段值的方法请参考 fine_conf_entity可视化配置 进行「自定义参数配置」。
| 配置项 | 含义 | 修改规则 |
|---|---|---|
| FVSConfig.fvsSchedulePageLoadingTimeLimit | 模板加载结束的最长时间 | 默认值为 60,单位为 s |
| FVSConfig.fvsSchedulePageLoadingDelayTime | 图表渲染时间 | 默认值为 2,单位为 s |
4. 报错:acquire lock timeout
报错信息:
报错信息为:acquire lock timeout
原因分析:
可能是由于定时调度的端口与服务器端口不一致。
解决方案:
1)在日志中,Ctrl+F 搜索 visitUrl

2)若该端口与服务器端口不一致,则需手动设置端口:
注:方法一的优先级高于方法二。即同时设置了方法一和方法二时,以方法一为准生效。
方法一:设置启动参数
注1:此方法仅适用于 FVS定时调度插件 为 V3.3 及以上版本。
注2:加完参数后需要重启服务器/设计器。
Windows 的 Tomcat 环境:在 catalina.bat 文件中添加参数
set "JAVA_OPTS=-Dserver.schedule.port=8075"
Linux 的 Tomcat 环境:在 caalina.sh 文件中添加参数
JAVA_OPTS="-Dserver.schedule.port=8075"
设计器环境:在 bin/designer.vmptions 中添加参数
-Dserver.schedule.port=8075
容器化部署的环境:在 /usr/local/tomcat/mount 下的 setenv.sh 中添加参数
JAVA_OPTS="$JAVA_OPTS -Dserver.schedule.port=8075"
方法二:修改 FineDB
1)在 FineDB 的 fine_conf_entity 表中增加参数指定 FVS 的推送端口,使其与工程路径中的端口保持一致。
例如:FVSConfig.fvsScheduleExecuteServerPort=8080。
2)重启服务器验证效果
注:指定 FVS 的推送端口,需要指定为可以访问的 ip+端口 中的端口。
5. 导出的图片/PDF 中文乱码或字体异常
问题描述:
导出文件中的中文显示为方框或乱码,或字体效果与设计不符。
原因分析:
服务器操作系统缺少模板中使用的字体。

解决方案:
确定模板中使用了哪些字体(如思源黑体、方正兰亭等),将这些字体文件(.ttf 或 .otf)安装到服务器的字体目录中(例如 /usr/share/fonts/),确保服务器端存在模板所需要的字体,刷新系统的字体缓存(执行 fc-cache -fv 命令),重启报表服务。
6. 导出失败,报错“URL 拒绝访问”
问题描述:
日志中出现 URL 被拒绝访问的相关错误。
原因分析:
定时调度服务在后台拼接的模板访问地址不正确,通常是端口识别错误。

解决方案:
在 Tomcat 添加启动参数,明确指定定时调度服务应使用的端口号。
对于非 Ops 部署:
在 setenv.sh 文件中添加:
JAVA_OPTS="$JAVA_OPTS -Dserver.schedule.port=你容器的服务端口"
对于 Ops 部署:
找到容器外的挂载目录下的 setenv.sh 文件(路径通常为 /挂载目录/fanruanxxx/mount/setenv.sh),编辑该文件:添加上述 -Dserver.schedule.port 参数,重启容器。
详情可参考文档:准备FineReport项目挂载目录 与 准备FineBI项目挂载目录 。
7. 导出失败,报错“等待页面加载完毕超时”
问题描述:
日志提示获取页面加载完成的“锁”失败,任务超时。
原因分析:
页面加载时间过长,或存在权限拦截、资源加载失败等问题,导致页面未能正常渲染。

排查步骤:
延长超时时间(临时):在 FineDB 数据库的 FINE_CONF_ENTITY 表中,设置 FVSConfig.fvsSchedulePageLoadingTimeLimit 的值为 300(单位:秒),然后重试任务。
手动访问验证:任务失败后,从日志中找到 visitURL 的链接,将其 IP 和端口替换为实际可访问的地址,在浏览器中手动打开。检查:页面是否能完全加载?是否需要登录认证?是否有图表或组件加载失败?
8. 启动时报错“MissingDependencyException”
问题描述:
在日志文件中搜索 ChromiumUtils,会发现 com.teamdev.jxbrowser.engine.MissingDependencyException 错误信息。
原因分析:
服务器缺少 Chromium 运行所必需的系统依赖库。
原理:FVS 定时调度通过在服务器后台启动一个 Chromium 浏览器进程,访问模板的特定预览链接,待页面完全加载后,执行截图或生成 PDF 命令。

解决方案:
请按照下文 8.1 节「安装Chromium依赖」 的步骤,在服务器操作系统上安装 Chromium 及其所有依赖。安装完成后,务必使用 8.2 节「验证Chromium安装」中的命令测试 Chromium 是否可正常截图。
8.1 安装Chromium依赖
根据服务器操作系统,选择对应的安装方法。
1)CentOS 7/8 系统
在线安装(推荐,服务器可访问外网)
安装 EPEL 源:
yum install epel-release
安装 Chromium:
yum install chromium
离线安装(服务器无法访问外网)
找一台相同系统版本且可联网的机器,在该机器上执行:
yum install epel-release
yum install chromium --downloadonly --downloaddir=/path/to/your/directory/
删除下载目录中所有以 Chromium 开头的 .rpm 文件(因为我们只需要其依赖包),将目录下剩余的 .rpm 文件复制到目标服务器的同一目录,在目标服务器上执行安装,yum 会自动解析依赖关系:
注:请勿使用 rpm -Uvh .*rpm 命令,它无法自动处理依赖关系。
yum localinstall /path/to/your/directory/*.rpm
2)Debian /Ubuntu 系统
在线安装(推荐,服务器可访问外网)
apt install chromium
离线安装(服务器无法访问外网)
找一台相同系统版本且可联网的机器,清理并下载依赖包:
apt clean
apt-get install --download-only chromium
依赖包默认下载到 /var/cache/apt/archives/ 目录,删除所有以 Chromium 开头的 .deb 文件,将目录下剩余的 .deb 文件复制到目标服务器的同一目录,在目标服务器上执行安装:
dpkg -i *.deb
3)通过 FineOps 部署
如果您使用 FineOps 进行部署,FVS 定时调度功能需要一个独立的服务容器。请参考官方文档,在您的 Ops 平台上新增一个名为 fvs-schedule 的服务容器,相关操作指南:运维项目添加组件 。

管理员登录运维平台,点击对应项目。点击「维护>组件管理」,点击「添加组件」,选择 FVS 定时调度服务。

8.2 验证Chromium安装
1)在服务器上找到已安装的 Chromium 可执行文件(通常位于 /usr/bin/chromium 或 /usr/bin/chromium-browser)。
2)打开终端,执行以下命令进行测试:
chromium --version
# 或
chromium-browser --version
3)进阶截图测试:执行以下命令,如果能在当前目录生成 screenshot.png 且内容为百度首页,则证明 Chromium 功能完整。
./chromium --headless --disable-gpu --screenshot=./screenshot.png --window-size=1280,1696 https://www.baidu.com/
9. FVS 定时调度不支持部分公式
不支持的公式类型:
结果报表单元格值的公式、表单公式、报表块公式与跨 Sheet(工作表)引用的公式。
原因:
FVS 的导出原理与 cpt/frm 模板不同,它通过浏览器“预览”渲染,而非在后台直接计算模板。
建议:
在设计用于定时调度的 FVS 模板时,避免使用上述类型的公式。
注:FVS 定时调度支持的公式可参考:定时调度支持的公式 。
10. FVS 定时调度支持配置参数说明
可以通过修改 FineDB 中 FINE_CONF_ENTITY 表的以下配置项,来调整定时调度的行为:
| 参数 | 默认值 | 说明 |
|---|---|---|
| FVSConfig.scheduleWithSnapshot | true | FVS 定时调度是否开启快照功能 false:不开启,导出结果采用预览实时数据的形式 true:开启,导出结果采用快照形式 注:该参数需在 FVS V4.6.0 及以上版本、fine_conf_entity可视化配置插件 V1.9.42 及以上版本中使用 |
| 以下参数需在 fine_conf_entity可视化配置插件 V1.9.43 及以上版本中使用 | ||
| FVSConfig.fvsScheduleExecuteServerPort | -1 | 单机部署时,指定定时调度任务执行的端口号 注:不建议使用,建议使用 JVM 参数指定 |
| FVSConfig.fvsSchedulePageLoadingTimeLimit | 90 | 页面加载超时时间(秒),防止因页面加载过慢导致任务卡死 |
| FVSConfig.fvsSchedulePageLoadingDelayTime | 2 | 页面加载完成后的额外等待时间(秒),用于确保所有动态图表渲染完毕 |
| FVSConfig_fvsScheduleConcurrency | 2 | 控制并发调度个数 |
| FVSConfig_fvsScheduleTaskQueueLength | -1 | 控制可接受的调度排队长度 |
| FVSConfig_fvsScheduleBrowserUrl | 空 | 设置 FVSConfig 中配置的远程 Chromium 地址,设置后优先级最高 |
| FVSConfig_schedulewithPreExport | false | 是否开启先预导出一轮图片,再正式导出。适用于导出后不完整,加延迟参数后导出依旧不完整的场景 |
| FVSConfig_schedulewithDebugMode | false | 是否开启调度过程调试模式 注:该参数需要在 FVS V4.9.0 及以上版本、FVS 定时调度插件 V3.11及以上版本中使用 |
