我们的流星服务器有问题。当我们使用 Meteor.publish/Meteor.subscribe 发布大约 300 个项目时,服务器会增加其内存并最终变得无响应。我们想到了:1)监控一个活跃订阅所占用的反应订阅数量/内存2)做类似的事情,一次发布” - 忽略服务器端集合的变化
关于如何完成上述任何一项的任何想法?或任何其他调试/提高流星应用程序性能的技巧?谢谢
我们的流星服务器有问题。当我们使用 Meteor.publish/Meteor.subscribe 发布大约 300 个项目时,服务器会增加其内存并最终变得无响应。我们想到了:1)监控一个活跃订阅所占用的反应订阅数量/内存2)做类似的事情,一次发布” - 忽略服务器端集合的变化
关于如何完成上述任何一项的任何想法?或任何其他调试/提高流星应用程序性能的技巧?谢谢
zorlak 的回答很好。
其他一些事情:
您可以通过 API 编写自己的自定义发布者this.set
,基于_publishCursor
. 你会做这样的事情:
Meteor.publish("oneTimeQuery", function () {
MyCollection.find().forEach(function (doc) {
sub.added("collectionName", doc._id, doc);
});
sub.ready();
});
这会进行查询,将其结果向下发送,然后不再更新。
也就是说,我们希望 Meteor 的表现是这样的,这是不必要的!
我还想添加一种简单的方法来从应用程序获取统计信息(如观察到的光标数)到 Meteor(作为经过身份验证的订阅公开),但还没有时间。
从 Meteor 0.5.1 开始,您可以做的一件事是从发布函数中删除对 userId 的依赖。如果发布函数不依赖于订阅的用户,那么 Meteor 将缓存 db 查询,这样它就不会随着更多用户订阅而变慢。
请参阅这篇 Meteor 博客文章: http: //meteor.com/blog/2012/11/20/meteor-051-database-scaling