2017-04-15 94 views
0

我遇到了一个问题,在运行缓慢的数据库设置时出现非常复杂的聚合。流星方法/呼叫在30秒后超时

有时候如果它足够复杂的花费超过30秒,我得到:

Exception while invoking method 'methodName' MongoError: connection 3 to 'IP.IP.IP.IP' timed out 
at Object.Future.wait 

我知道,这不是伟大的,有一些需要超过30秒,但是这就是我的工作。在超时之前,有什么方法可以设置流星等待时间超过30秒?

+0

除非您处理数以千万计的文档,否则可能会使您的脚本更加高效。你为什么不发布代码,然后我们可以帮助你加快速度? – Sean

+0

我正在处理数以千万计的文档,包括$ facet,$ lookup和其他一些密集操作。 –

+0

足够公平 - 30秒以上的时间似乎仍然很长。你有没有添加索引到你正在查询的字段? – Sean

回答

1

在挖掘出问题之后,我找到了答案。在我连接到我指定的URL我的流星的应用程序,我需要一个加入到我的蒙戈网址:

socketTimeoutMS=XXXXX 

我的网址现在看起来像:

MONGO_URL=mongodb://localhost:27017/dbName?socketTimeoutMS=45000 meteor 

这个线程在正确的让我方向: "Server x timed out" during MongoDB aggregation

我也试过.noCursorTimeout()在我猜测的聚合结束时,没有做任何事情。