Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GoLang MongoDB连接泄漏_Mongodb_Go_Connection_Mgo - Fatal编程技术网

GoLang MongoDB连接泄漏

GoLang MongoDB连接泄漏,mongodb,go,connection,mgo,Mongodb,Go,Connection,Mgo,你好 下面是一个代码示例,它每秒都从MongoDB执行检索。 我的问题是每次检索时都会打开额外的连接(根据MongoDB日志) 代码: MongoDB日志: Starting mongo worker ... Creating session ... Session created! Retrieving data ... Creating collection ... Collection created! Total retrieved: 3 documents. Retrievin

你好

下面是一个代码示例,它每秒都从MongoDB执行检索。 我的问题是每次检索时都会打开额外的连接(根据MongoDB日志)

代码:

MongoDB日志:

Starting mongo worker ... 
Creating session ...
Session created!
Retrieving data ...
Creating collection ...
Collection created!
Total retrieved:  3  documents.
Retrieving data ...
Creating collection ...
Collection created!
Total retrieved:  3  documents.
Retrieving data ...
Creating collection ...
Collection created!
Total retrieved:  3  documents.
Retrieving data ...
2017-08-03T11:24:53.600+0300 I NETWORK  [initandlisten] waiting for connections on port 27017
2017-08-03T11:25:38.785+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54591 #1 (1 connection now open)
2017-08-03T11:25:41.952+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54592 #2 (2 connections now open)
2017-08-03T11:25:45.260+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54593 #3 (3 connections now open)
2017-08-03T11:26:19.327+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54594 #4 (4 connections now open)
2017-08-03T11:26:38.797+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54595 #5 (5 connections now open)
2017-08-03T11:26:41.964+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54596 #6 (6 connections now open)
2017-08-03T11:26:45.269+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54597 #7 (7 connections now open)
2017-08-03T11:27:19.338+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54599 #8 (8 connections now open)
2017-08-03T11:38:37.106+0300 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54836 #9 (9 connections now open)

我做错了什么?Mongo中的连接数达到数千个,最终导致它死亡…

每次复制会话时,都应该将其关闭

重写
GetCollection
GetAllRows
,使用如下函数:

func FetchData(session mgo.Session, queueName string) ([]Data, error) {
  fmt.Println("Creating collection ...")
  sess := session.Copy()
  collection := sess.DB(dbName).C(queueName)
  fmt.Println("Collection created!")

  defer  sess.Close() 

   var results []Data

   err := collection.Find(nil).All(&results)
   if err != nil {
       panic(err)
       return nil, err
   }
   return results, nil
}
注意这一行

 defer  sess.Close() 

目前,它总共只打开两个会话,并关闭其中一个会话-这不是最佳的,但不应导致连接数量不断增加。会话创建是在循环之外完成的。非常感谢您的回答!!
 defer  sess.Close()