我有一个托管在 Galaxy 上的流星应用程序,数据库位于 mLab 上。
如果文档很小,更新文档的流星方法可以正常工作,但是如果大于一定大小,则 Galaxy CPU 使用率会上升到 100%,并且容器会变得不健康。
Meteor APM 报告数据库更新耗时 <400ms,而“计算”(直接在更新之前)耗时 80 000+ ms。
这是代码的简化示例。
该集合在一个文件中声明并分配了一个模式。
trips.js
const Trips = new Mongo.Collection('trips');
//schema is declared and attached
export {Trips}
这些方法在另一个文件中声明。
方法.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 使用率和长时间延迟的错误。