**使用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)
}
有疑问加站长微信联系(非本文作者)