# 低代码平台响应慢问题排查与解决指南
当系统出现响应缓慢、页面加载卡顿或操作超时时,可以参考以下指南按步骤排查。每个问题对应一个独立的排查方向。
# 1. 主机名解析问题
- 现象:系统启动慢,或所有接口(尤其是通过网关访问的接口)响应慢(可能达到10秒以上)。
- 排查:
- 检查应用服务器(特别是Linux系统)的
/etc/hosts文件。 - 查看是否配置了
127.0.0.1 你的主机名。
- 检查应用服务器(特别是Linux系统)的
- 解决方案:
- 编辑
/etc/hosts文件。 - 确保主机名(由
hostname命令获得)正确解析到内网IP地址,而不是127.0.0.1。 - 格式示例:
192.168.1.100 my-server-hostname。 - 修改后重启应用。
- 编辑
# 2. 子表中存在大字段,导致接口返回数据较大且响应慢
- 现象:子表存在 mediumtext 字段,导致接口查询时返回数据达到30M,响应时间30s。
- 排查:
- 在浏览器开发者工具(F12)中,找到查询主表详情的接口(通常是 detail 或 query-with-page)。
- 查看该接口的响应体(Response),确认返回数据的大小(如30+ MB)。
- 检查响应数据中,子表部分的数据量是否巨大,并且包含了非常长的文本内容。
- 解决方案:
默认查询时不加载子表的大字段内容,仅在需要时按需加载。可以通过修改实体字段类型并利用平台“排除大字段”功能来实现。
- 进入EOS开发中心,找到并打开对应的子实体,将子实体text字段的字段类型改为clobString(只改实体)。
![实体字段类型配置]()
- 在主表单中开启排除大字段功能。
![排除大字段]()
注意:此步骤只修改实体定义,不会更改数据库表结构。ClobString 类型是EOS框架提供的一种特殊类型,用于处理大数据字段,并支持按需加载。
- 进入EOS开发中心,找到并打开对应的子实体,将子实体text字段的字段类型改为clobString(只改实体)。
# 3. 子表格数据量过大导致页面卡顿
- 现象:主表单中嵌入的子表格,当数据量达到几百行时,页面新增、编辑、保存操作变得非常卡顿,甚至卡死。
- 排查:
- 确认问题页面是否存在1对N关系的子表格。
- 确认子表格的数据行数是否过大(如超过200条)。
- 解决方案:
- 为子表格开启分页功能。
![分页]()
- 通过分页控制每页显示的数据量(如每页10条),避免一次性渲染所有数据行。
- 注意:如果子表格不支持分页(如某些特殊场景),可以考虑通过API
this.Api.loadEntity({ id: this.formData.id }, true)的方式刷新整个表单,而不是直接操作子表格的DOM。
- 为子表格开启分页功能。
# 4. Nginx配置不当
- 现象:页面加载慢,但直接访问后端服务接口很快。
- 排查:
- 对比直接访问后端端口和通过Nginx访问同一接口的响应时间。
- 解决方案:
- 优化Nginx配置,确保以下超时参数设置合理(通常建议设为60秒以上):
proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; - 调整后重启Nginx。
- 优化Nginx配置,确保以下超时参数设置合理(通常建议设为60秒以上):
# 5. 数据库连接池问题
- 现象:服务启动正常,运行一段时间后,数据库操作报错,如“An attempt by a client to checkout a connection has timed out”或“连接不可用”。
- 排查:
- 检查应用日志,查找数据库连接超时或无可用连接的报错。
- 检查应用的数据源配置(通常在
user-config.xml或application.properties中)。
- 解决方案:
- 检查并调整连接池参数,例如c3p0的
maxPoolSize,acquireIncrement,checkoutTimeout。 - 关键点:某些数据源(如用于报表的)的
帮助进程数(如numHelperThreads)必须设置为 >0,否则会导致应用启动时数据源加载失败而堵塞。 - 避免最小连接数设置得比连接池还大。
- 检查并调整连接池参数,例如c3p0的
# 6. 资源容器/标签页懒加载问题
- 现象:包含多个标签页或资源容器的页面首次加载很慢。
- 排查: 检查页面设计,是否在不可见的标签页中也加载了复杂的视图或数据。
- 解决方案:
为标签页组件或资源容器开启“懒加载”功能。这样只有在用户切换到该标签页时,才会去加载其中的数据和视图,从而提高首屏加载速度。
![懒加载]()
# 7. 附件预览/下载慢
- 现象:下载或预览大文件时,页面一直转圈或报错。
- 排查:
- 确认文件大小。
- 检查Nginx的超时时间配置。
- 解决方案:
- 参考第2点,调整Nginx的
proxy_read_timeout。 - 如果附件存储在数据库中(DB模式)且文件很大,建议考虑将附件存储改为本地文件系统或对象存储(如MinIO),以减轻数据库压力。
- 参考第2点,调整Nginx的
# 8. 接口调用超时(SocketTimeoutException)
- 现象:服务间调用或调用外部接口时,出现
java.net.SocketTimeoutException: Read timed out。 - 排查:
- 定位是哪个HTTP/REST请求超时。
- 解决方案:
- 如果是逻辑流中的Rest图元:检查目标服务的响应速度。
- 如果是流程引擎事件调用:对于同步调用耗时过长的情况,建议将调用方式改为“异步”,避免阻塞流程主线程。
# 终极手段
如果以上步骤都无法解决问题:
采集完整信息:
- 问题发生时间点
- 具体哪个页面/功能慢
- 是否所有用户受影响
- 近期数据量变化
- 连续3次的jstack日志
按模板反馈给普元售后,可大幅减少沟通时间。
记住:80%的性能问题都出在数据量大、索引缺失、锁等待和代码逻辑上,按此指南一步步排查,总能找到根因。



