问题:
Meteor中的MongoDB订阅速度缓慢(平均500毫秒),启动流星后CPU使用率保持在100%。我怀疑这是一个权限或设置问题。
详细信息:
1)设置:CentOS 6.6,启用了Oplog拖尾的MongoDB 3.0,快速CPU,大量RAM。并发症,任何以SUDO开头的命令都会导致10-30秒延迟。
2)Serverside发布:
Meteor.publish('price', function() {
return priceCollection.find({"type":"Price","Name":"item1"}, {sort: {"date": -1}, fields:{"type": 1, "Name": 1, "date": 1, "value": 1}, limit: 2});
});
3)使用Subscription Manager通过Iron Router订阅客户端
waitOn: function() {
return [permanentSubs.subscribe("price")];
}
4)远程MongoDB性能:
rs0:PRIMARY> db.priceCollection.find({"type":"Price", "Name":"item1"}, {"type":1, "Name":1, "date":1, "value":1}).sort({"date":-1}).limit(2).explain("executionStats")
使用正确的索引,执行时间平均在0-10ms之间。
5)流星Minimongo表现:订阅完成后没有性能问题,2个文件使用Chrome浏览器控制台毫不拖延地返回。
6)在页面渲染之前需要等待一秒钟。使用Kadira显示发布时间范围在400ms-600ms之间。
7)运行Kadira CPU Profiler:53%包:ejson,25%包:下划线,其余:< 1%。
8)Kadira没有显示服务器端错误和订阅错误。
想要答案
1)从哪里开始寻找减速的根本原因?
2)是否有其他调试工具可用于细分订阅过程以帮助调试订阅性能问题。
如果需要更多信息,请发表评论。