mgo 和 mongodb 的 i/o 超时
Posted
技术标签:
【中文标题】mgo 和 mongodb 的 i/o 超时【英文标题】:i/o timeout with mgo and mongodb 【发布时间】:2014-08-30 09:56:42 【问题描述】:我正在从 mgo 运行 map-reduce 作业。它运行在一个包含超过 350 万条记录的集合上。由于某些原因,我现在无法将其移植到聚合;可能会更晚。所以,map-reduce 是我所期待的。这项工作,当我从我为测试代码和输出而创建的原始 js 文件运行它时,运行良好。我尝试将 map 和 reduce 代码放在两个字符串中,然后尝试调用 mgo.MapReduce 为我执行 map-reduce,我将输出写入不同的集合中。它给了我
读取 tcp 127.0.0.1:27017: i/o 超时
不过,由于该作业已在后台触发,它仍在运行。现在根据这个线程在这里---http://grokbase.com/t/gg/mgo-users/1396d9wyk3/i-o-timeout-in-statistics-generation-upsert
通过调用 session.SetSocketTimeout 很容易解决,但我不想这样做,因为此 map-reduce 将运行的文档总数会有所不同,因此我相信时间会有所不同。所以,我永远无法以我相信的方式解决问题。
我还有哪些其他方法?
请帮帮我
【问题讨论】:
不是一个真正的答案,但你总是可以将超时设置为非常长的,看看它是否有效,例如:session.SetSocketTimeout(1 * time.Hour)
,同样出于好奇,你运行它需要多长时间来自 js 文件?
大约 10 分钟。我也想到了你告诉我的。但正如你提到的,这不是一个“正确”的解决方案。让我看看我能想出什么。
我真的不认为这个具体问题有合适的解决方案
我也这么认为!! :(
【参考方案1】:
将我的评论移至答案。
我认为解决此问题的唯一方法是将套接字超时设置为高得离谱的值,例如:
session.SetSocketTimeout(1 * time.Hour)
【讨论】:
对我不起作用。看到这个:github.com/globalsign/mgo/issues/21以上是关于mgo 和 mongodb 的 i/o 超时的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 golang 和 mgo 库在 mongodb 中创建文本索引?
Golang mongodb 从集合中删除所有项目 [mgo.v2]
使用 golang 和 mgo,如何在 MongoDB 中搜索一系列值?