内存中的致命错误

Eastercow:

所以我在go中编写了一个守护程序,该守护程序可以处理大约800k个文档,而我遇到了内存不足的问题。

从我从mongodb获取文档时看到的情况来看,每个循环的内存使用量都会增加。

func main() {
session, err := mgo.Dial("localhost")
if err != nil { panic(err) }
defer session.Close()

subscriptionsC  = session.DB("sm").C("subscriptions")
subscriptions   := []Subscription{}

for {
    subscriptions = GetSubscriptions()

另一个功能是:

func GetSubscriptions()([]Subscription) {
    result  := []Subscription{}
    err    := subscriptionsC.Find(nil).Prefetch(0.0).All(&result)

    if err != nil { Log("signups_err", err.Error() + "\n") }
    return result
}

我不知道它是否在每个循环中重新声明数组或究竟发生了什么。

任何帮助将不胜感激。

从事:

该阵列definietly被inialized在每一个循环,因为调用的GetSubscriptions(),然后在循环里result := []Subscription{},但我认为这不是问题的根源。

问题可能出在您的全局会话上,请参阅Web应用程序中的数据库连接,正确的方法是使用会话池。

编辑:还请参见如何从处理程序调用mongoDB CRUD方法?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章