社交小程序,更新和查询频率较大,昨晚到了8点-9点有一批4000+流量进入,数据库查询出现大规模超时,以下是代码查询:
result = await db.collection('dyns').aggregate()
.match({
level: 1,
delete: 0,
status: 1,
ifhidden: _.neq(1),
circleId: _.neq('234555567888'),
verifyStatus: _.exists(false)
})
.sort({
sort: -1,
time: -1,
})
.limit(limit)
.lookup({
from: 'users',
let: {
openId: '$openId'
},
pipeline: $.pipeline()
.match(_.expr(
$.eq(['$openId', '$$openId']),
))
.project({
_id: 0,
avatar: 1,
nick: 1,
city: 1,
country: 1,
labels: 1,
openId: 1,
avatarVisitUrl: 1,
joinStatus: 1
})
.done(),
as: 'userInfo',
})
.project({
comments: 0,
})
.end();
这个是当时的流量访问
不知道能不能给一些建议呢?因为涉及高频访问、高频更新,如何加缓存呢
limit多大?不大应该没问题的