客户端直用使用db.collection获取数据偶现Process exited,errCode:"FUNCTIONS_EXECUTE_FAIL
客户端直用使用db.collection获取数据偶现Process exited,errCode:"FUNCTIONS_EXECUTE_FAIL
操作步骤:
- 通过客户端db直接请求数据
预期结果:
- 正确获取数据
实际结果:
- 有15%概率爆错,页面多刷新几次后正常
bug描述:
- 程序意外中止,偶现错误,但是概率较高,达到15%上下
- 写法没有问题,简化原写法为
db.collection('near_rent_trip').get()
作为测试写法,排除超时问题,测试数据共10条 - 模拟器中无问题,初步确定由打包后产生。
- 本月才出现,是否考虑hubiler更新所致或者基础库版本问题
图1 错误打印
图2 错误请求报错内容
图三 多次刷新界面后的正常请求
图4 代码被中止部分(直接写在uniapp中)
2 回复
去uniCloud web控制台查看对应时段异常的clientDB日志,发下日志内容
从错误信息和截图来看,这是一个典型的云函数执行失败问题。以下是关键分析点:
-
错误类型为FUNCTIONS_EXECUTE_FAIL,表明是云函数执行过程中出现了异常中断。
-
问题特征:
- 偶发性(15%概率)
- 仅出现在打包后版本
- 近期才出现
- 可能原因:
- 云函数冷启动超时
- 网络抖动导致连接中断
- 云环境资源分配问题
- 建议解决方案: (1) 增加重试机制:
async function getDataWithRetry() {
let retry = 3;
while(retry--) {
try {
return await db.collection('near_rent_trip').get();
} catch(e) {
if(!retry) throw e;
}
}
}
(2) 检查云函数配置:
- 确认云函数内存和时间限制是否足够
- 检查云函数依赖是否完整
(3) 监控云函数日志: 通过uniCloud控制台查看详细错误日志
(4) 考虑使用客户端直接查询替代云函数:
const db = uniCloud.database()
db.collection('near_rent_trip').get()