解析服务器+;mongoDB-高服务器过载

解析服务器+;mongoDB-高服务器过载,mongodb,parse-platform,Mongodb,Parse Platform,我们在自己的服务器上为手机游戏后端使用parse server+mongoDB。大约有200000个用户同时连接了约2k个用户。“_Session”收集了约100万条记录,并在继续增长 服务器CPU始终100%加载。 在MongoDB日志中,我可以看到95%的记录,如: 2017-05-11T16:25:24.738+0300i命令[conn1]命令appdb1.\u会话命令:查找{find:“{u Session”,筛选器:{u Session”令牌:“r:9EABA843DC3C3F8B48

我们在自己的服务器上为手机游戏后端使用parse server+mongoDB。大约有200000个用户同时连接了约2k个用户。“_Session”收集了约100万条记录,并在继续增长

服务器CPU始终100%加载。 在MongoDB日志中,我可以看到95%的记录,如:

2017-05-11T16:25:24.738+0300i命令[conn1]命令appdb1.\u会话命令:查找{find:“{u Session”,筛选器:{u Session”令牌:“r:9EABA843DC3C3F8B482DBC76009F94C18A”},排序:{},投影:{},限制:1}计划摘要:COLLSCAN密钥检查:0文档检查:1015131游标退出:1密钥更新:0写入冲突:0 numields:7930 nreturned:1 resle n:428锁:{Global:{acquireCount:{r:15862}},数据库:{acquireCount:{r:7931}},集合:{acquireCount:{r:7931}}}协议:op_query 556ms

我已经为_会话集合创建了索引, db.getCollection(“_Session”).getIndexes() [

]

但是,据我所知,它并没有被使用,DB在每次搜索记录时都会执行完整的集合扫描

所以服务器κ的响应有很大的延迟,请帮助解决这个问题


谢谢

尝试在后台的密钥会话令牌上创建索引:

db.yourCollection.ensureIndex({ "_session_token":1}, {background:true})

这将避免对带有key
\u session\u token的查询进行集合扫描

我在日志中看到,您对字段\u session\u token的查询以及您对sessionToken的索引。。你能检查一下吗?哦,我想解析服务器会在显示时对字段进行自己的重命名,我会尝试为我有donee:db.getCollection(“_session”).createIndex({u session_token:1},{background:true})的{u session_token字段创建索引。这个索引有用吗?在日志中的字符串更改为:2017-05-12T09:43:05.932+0300后,我命令[conn1]命令appdb1.\u Session命令:find{find:“{u Session”,filter:{},sort:{u updated_at:-1,{u created_at:-1},projection:{},limit:200}plansumsummary:COLLSCAN cursorid:63685935618 keystemed:0 docsExamined:1031857 hasSortStage:1 keydupdates:0 writeConflicts:0 numie lds:8062 nreturned:101 reslen:31250锁:{Global:{acquireCount{r:16126},数据库:{acquireCount:{r:8063}},集合:{acquireCount:{r:8063}}}协议:op_query 3706Ms这看起来像是另一个查询?CPU使用率仍然很高?CPU使用率约为10-20%!谢谢!
db.yourCollection.ensureIndex({ "_session_token":1}, {background:true})