Mongodb版本为5.0.2,机器内存32G,mongo实用4个多,单表2000万数据,数据每月定时导入一次。查询的数据较多,每次返回几千到20万+条数据(约8M)。目前问题是测试并发时,单个查询返回7万+数据的时候,时间是2s+,慢查询日志的执行时间是900ms。并发20的时候,返回时间是近一分钟。慢查询日志显示的执行时间是300ms。已创建复合索引,并且是在命中索引的情况(索引两字段,查询条件两字段)。由于插入图像失败,上传不了图片
kongxx 未选择答案
Mongodb版本为5.0.2,机器内存32G,mongo实用4个多,单表2000万数据,数据每月定时导入一次。查询的数据较多,每次返回几千到20万+条数据(约8M)。目前问题是测试并发时,单个查询返回7万+数据的时候,时间是2s+,慢查询日志的执行时间是900ms。并发20的时候,返回时间是近一分钟。慢查询日志显示的执行时间是300ms。已创建复合索引,并且是在命中索引的情况(索引两字段,查询条件两字段)。由于插入图像失败,上传不了图片
在并发20的时候,使用mongostat查看,可以看到net_out有一个时间返回了150+M。跟net_in时间距离5秒。查看慢查询日志,看到40条记录。20条query,20条getMore,相信一次查询分成了两次获取。query的返回条数是101条。getMore返回的是27万条。使用的是Java的mongoTemplate查询,查询时间集中在40秒到1分钟。正常单条不并发的情况查询时间是6秒。问题是现在并发的时候卡在了什么地方,是在mongdb那边发生了堆积还是网络传输的问题,需要怎么优化?