mongodb压测总结


```
一、压测阿里云mongodb服务器,在500以上并发量的时候总是性能上不去。压测包分别部署在两个服务器上同时启动高并发测试和在一个服务器单个启动相差不大,经多次测试仍无果,后来少坡询问阿里,才知道,阿里那边mongodb连接做限制性了,最合适的并发连接数是在300至500之间。 __所以我们在压测前,应该先了解清楚服务端的性能,然后再针对性的压测。压测指标是以每秒请求量来衡量的,本次压测最高可达到每秒5000多的请求量__ 。
```
```
二、压测提供monogodb接口服务器。本次压测耗时较长,首先在异步更新请求时出现mongodb接口服务器接收不到请求,而使用同步请求则正常,经过反复测试排查,最后去掉了httpclient代理功能,终于可以成功异步请求。
```
```
三、将测试代码实际搬到通信服务器模拟线上运行来进行mongodb与mysql服务器性能测试比较,方便日后排查服务器性能缓慢是在mongo端还是通讯端。但是测试结果很不理想,同一次查询mongodb服务请求耗时500至1000多毫秒,而mysql仅仅三四毫秒。压测好几遍均是这种结果,后来推测可能是接口服务器网络连接请求耗时会比较长。紧接着更改代码改为本地直连不请求mongodb服务器接口,第一次本地代码直连请求测试结果发现和mysql耗时相差无几,但是接下来测试又打回原点。排查了mongo服务器结果发现出现很多慢查询,很多查询更新条件为空导致mongodb全表查询服务器阻塞了,所以直连连接也会因为阻塞而查询耗时。这是正常现象。我们紧接着发现之前导入的mongodb的数据有问题,同时查询了一下索引。索引是有加上的,但是加的不够准确,像id,sid这样的主键或者类似主键的字段应该设置唯一性的,且是spare的即空字段不予更新。重新设置了两个表里的索引,以及对应业务的联合索引,重新往mongo里导入250万条新的数据,再次测试,mongo服务器不再阻塞,且mongodb接口服务请求查询和mysql终于相差无几,测试通过。
 __总结一下,在测试数据库,不论关系型还是非关系型,首先一定要先设置好正确的数据结构,设置好合适业务的索引,索引设置正确还是蛮重要的,会直接影响性能。其次要确保数据没有问题,不要出现脏数据,不要存储错误结构数据。__ 
```
```
四、本次测试耗时的另一方面原因是我没有分类测试,我把更新查询代码全改了后一起压测的,这就导致测试数据在更新的时候有问题,那么查询的时候也会出现问题。 __所以关于测试,总结一下,最好分门别类地测试,一下子改造完的确可以,前提是你能保证没问题,所以最好是测一个接口没问题再去压测另一个,然后都没有问题了再进行混合压测,一步步来,比较稳妥,比较最后结果,可能不耗时还会省时。__ 
```
```
五、针对更新查询条件为空会造成全表查询的问题,需要mongodb接口服务器做监控,为了不影响服务器性能,任何客户端请求条件不符合要求的要一律打回直接拦截。因为不能保证每个端都可以写出正确的请求语句,万一写错一个发布了,那么对mongodb服务器造成的结果就是灾难性的阻塞。。。
```
```
六、关于插入,之前把mysql的数据往MongoDB里导入是调用save接口单条单条导入的,260万是数据耗时两个多小时,改为批量插入方式,5分钟完成!直接提升效率,所以用对一个好方法真的是省时省力。
```
以上,本次mongodb压测使用结果及总结,如有建议和补充,欢迎各位追加评论,共同学习,共同进步。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值