工作人员
工作人员
  • 发布:2021-06-21 10:43
  • 更新:2021-06-21 15:53
  • 阅读:1015

用云函数读取数据库经常超时怎样解决

分类:uniCloud

用云函数读取数据库经常超时,大家是怎样解决

2021-06-21 10:43 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

  • 工作人员 (作者)

    显示超时,一共才3条数据

    2021-06-21 21:27

  • DCloud_uniCloud_WYQ

    回复 工作人员: 错误信息贴出来一下

    2021-06-22 14:25

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 我也遇到了,请问会是什么原因呢,也设置了索引,但貌似不起作用,报这个: code: "\"FunctionBizError\""

    message: "\"InternalServerError:errCode: InternalServerError | errMsg: operation exceeded time limit,集合fht_log_20211012操作超时,请参照此文档进行优化:https://uniapp.dcloud.net.cn/uniCloud/db-performance\""

    2021-10-13 09:53

  • DCloud_uniCloud_WYQ

    回复 1***@163.com: 你也是数据量很小的集合报的吗?

    2021-10-13 11:05

  • DCloud_uniCloud_WYQ

    回复 1***@163.com: 如果不是就参考提示里面的文档进行优化

    2021-10-13 11:05

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 集合数据量在30万以上就会报这个错了,看了下优化文档,貌似只有设置索引那个能做,但是设置了索引,也不起作用

    2021-10-13 11:18

  • DCloud_uniCloud_WYQ

    回复 1***@163.com: 30万不至于,我们有个上千万数据的测试集合,设置合适索引的情况下查询没什么问题。你可以看一下是不是执行了带条件的count操作,或者查询条件和索引不匹配

    2021-10-13 11:20

  • DCloud_uniCloud_WYQ

    或者使用了较大的skip

    2021-10-13 11:20

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 我是做了云函数URL化,在自己的管理后台调用的,看network请求2~3s,接口就返回这个错误信息了,都还没有达到超时时间,请问会是啥原因呢

    2021-10-13 11:21

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 用了聚合操作里面的api: let {data:yesterday} = await yesterdayCollction.aggregate()

    .match({

    enter_time: dbCmd.and(dbCmd.gt(yesterdayBoundaries[0]), dbCmd.lt(yesterdayBoundaries[24]))

    })

    .bucket({

    groupBy: '$enter_time',

    boundaries: yesterdayBoundaries,

    default: 'other',

    output: {

    // count: dbCmd.aggregate.sum(1),

    deviceIds: dbCmd.aggregate.addToSet('$device_Id')

    }

    })

    .end()

    2021-10-13 11:23

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 另外我们设置的索引不是唯一的,因为有可能有重复的

    2021-10-13 11:29

  • DCloud_uniCloud_WYQ

    回复 fuguxu: 这个超时不是指云函数的超时,而是单次数据库请求的超时。单词数据库请求超过1秒无响应就会触发超时错误。你在第一步match之后一般筛选出多少数据?

    2021-10-14 10:56

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 整个集合数据量在30~50万之间,第一次match总不会超过这个,个人感觉是bucket操作引起的超时,因为我把bucket去掉单纯match是没问题的,加上bucket就超时了,另外用hbuilderX在本地运行没有超时,URL化在前端调用就超时了,目前比较懵~~~

    2021-10-14 11:13

  • DCloud_uniCloud_WYQ

    回复 fuguxu: bucket操作确实比较耗时,第一步match的时候能把筛选出的数据集尽量弄小一些应该能缓解这个问题

    2021-10-14 11:25

  • fuguxu

    回复 DCloud_uniCloud_WYQ: 目前是把一次操作成分2次了,把match的数据量变小了,就没有超时~~~~

    2021-10-14 15:06

该问题目前已经被锁定, 无法添加新回复