我有一个流星应用程序,该应用程序托管在Galaxy上,数据库在mLab上。
如果文档很小,则使用流星法更新文档效果很好,但是如果文档大于特定大小,则星系CPU使用率将高达100%,并且容器变得不健康。
流星APM报告数据库更新耗时少于400毫秒,而“计算”(直接在更新之前)耗时80 000毫秒以上。
这是代码的简化示例。
声明集合并在一个文件中分配一个模式。
trips.js
const Trips = new Mongo.Collection('trips');
//schema is declared and attached
export {Trips}
方法在另一个文件中声明。
Methods.js
import {Trips} from '../trips';
Meteor.methods({
'updateTrip' (tripId, trip){
check(tripId, String);
check(trip, Object);
Trips.update({
_id: tripId
},{
$set: {
field1: trip.field1,
field2: trip.field2,
field3: trip.field3
}
});
}
});
在某些情况下,字段是其中嵌套了大对象的对象。
我是Meteor和MongoDB的新手,并且不是该项目的原始开发人员,所以我想知道此代码中是否存在可能导致100%CPU使用率和长时间延迟的错误。