我收到以下错误:
连接超时。没有收到心跳。
访问我的meteor应用程序(http://127.0.0.1:3000
)时。该应用程序已移至具有相同代码库的新PC - 并且服务器运行良好且没有错误,我可以访问mongodb。什么会导致上述错误?
当集合较大时,似乎会出现问题。但是我让它在另一台即时加载集合的计算机上运行。在最终失败之前,与袜子的连接需要花费一分多钟并且会增大;
答案 0 :(得分:3)
Meteor的DDP实现了用于长轮询的Sockjs Heartbeats。这可能是由于DDP Heartbeat的超时默认值为15秒。如果您访问大量数据并且需要花费大量时间,在您的情况下,1分钟,DDP将在被操作阻止足够长时间后超时,以防止代理关闭连接(这可能更糟),并且然后尝试重新连接。这可以永远持续下去,你可能永远不会完成这个过程。
您可以在DDP关闭连接之前在短时间内尝试断开连接和重新连接,并将数据库访问划分为更短的连续进程,您可以在每次迭代时获取这些进程并查看问题是否仍然存在:
// while cursorCount <= data {
Meteor.onConnection(dbOp);
Meteor.setTimeout(this.disconnect, 1500); // Adjust timeout here
Meteor.reconnect();
cursorCount++;
}
func dbOp(cursorCount) {
// database operation here
// pick up the operation at cursorCount where last .disconnect() left off
}
但是,当断开连接时,所有实时更新也将停止,但显式重新连接可能会弥补较小的阻止。
上查看有关此问题的讨论