**使用mgo连接mongodb,压测时如果用go test() 测试时速度越来越慢【开始几十毫秒,最后就需要几秒甚至几十秒,查看mongo日志没有发现慢查询,从日志看mongo的查询还是很快的】,但是当这样测试时速度就很稳定一直都是几十毫秒(把go关键字去掉,单线程执行)。** for i:=0;i<100;i++ { test() } **求大神指点为什么在并发下mgo的查询操作会越来越慢【本机测试不存在网络消耗】?观察cpu和内存也并没有到瓶颈 ** for i:=0;i<100;i++ { go test() } func test(){ t1 := time.Now().UnixNano() / 1e6 session:=CloneSession() defer session.Close() c:=session.DB("irectoryperdb").C("test") err:=c.Find(bson.M{"data.id": bson.M{"$gte": 1527319500, "$lte": 1527319500}, "index": "test_1min_index"}).Select(bson.M{"data.id":1}).Sort("-data.id").All(&kline) if err!=nil{ fmt.Println(err) } fmt.Printf("%d,%d\n",time.Now().UnixNano()/1e6 - t1,len(kline)) } func init() { globalMgoSession, err := mgo.Dial("127.0.0.1:27017") if err != nil { panic(err) } GlobalMgoSession=globalMgoSession GlobalMgoSession.SetMode(mgo.Monotonic, true) //default is 4096 GlobalMgoSession.SetPoolLimit(4096) }