`
flysnowxf
  • 浏览: 577772 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongodb压力测试for java

阅读更多

这是基于实际业务的压力测试,测试机和服务器的配置都很低。

测试机。本人机器,500进程cpu基本100%。
服务器:
8G内存
双核Intel(R) Pentium(R) Dual  CPU  E2200  @ 2.20GHz
测试时cpu保持在90%左右。

测试请求流向:
测试机jmeter->服务器tomcat->服务器mongodb

mongodb数据大小:
150w条数据
"resident": 1439
"virtual": 3180
"mapped": 1136
也就是使用了1.4g的内存

mongodb的测试命令:

{ "$and" : [ { "$or" : [ { "basic.email" : { "$ne" :  null } , "basic.validEmail" : 1}]}]}

这条命令是无法使用索引的。

java客户端使用spring-data-mongodb1.0.0.M5,连接池设置最大200连接:

connections-per-host="200"
threads-allowed-to-block-for-connection-multiplier="100"
 

测试结果:

线程数

200

循环次数

20

总次数

4000

 

每秒请求数

平均响应时间(毫秒)

skip(0).limit(25)

436

374

skip(100).limit(25)

212

840

 

线程数

500

循环次数

20

总次数

10000

 

每秒请求数

平均响应时间(毫秒)

skip(0).limit(25)

427

1010

skip(100).limit(25)

202

2190


总结:
1.以线程数500为例,平均TPS为427,以这个为高峰请求数,一般请求为427/10=42,也就是每秒42个请求,一天362w的pv。
也就是说,一台性能不怎么样的机器,在不使用索引的恶劣查询中,基本应付400w左右的pv。为了避免单点,2台机器可以应付每天1000w pv的应用。
2.使用skip略过大量文档时,性能会急剧下降。这里测试下降了整整一半。

单纯对mongodb的测试,可参考:
Mongodb亿级数据量的性能测试http://www.cnblogs.com/lovecindywang/archive/2011/03/02/1969324.html
分享到:
评论

相关推荐

    Java爬虫详细完整源码实例

    9. **Scrapy for Java**:虽然Java没有像Python的Scrapy这样成熟的爬虫框架,但有一些类似项目,如WebMagic,它提供了一套完整的爬虫解决方案,包括下载器、解析器、Pipeline等组件。 10. **验证码识别与登录模拟**...

    java开发的业务风控系统.zip

    10. **测试与优化**:系统需经过严格的测试,包括单元测试、集成测试和压力测试。JUnit、Mockito和Selenium等工具可用于Java应用的测试。 这个压缩包中的源代码可能包含了上述所有组件的实现,开发者可以通过阅读和...

    【Java面试资料】-(机构内训资料)杭州-蚂蚁金服-Java高级

    15. **测试**:了解单元测试、集成测试、压力测试等,能使用JUnit、Mockito等测试框架。 16. **算法与数据结构**:虽然Java面试中算法题相对较少,但基础的排序、查找算法以及常见数据结构(如链表、树、图)的理解...

    Spring4.0 jar包

    在日志方面,Spring4.0支持SLF4J(Simple Logging Facade for Java)作为默认的日志抽象层,允许开发者选择任何兼容的底层日志框架,如Log4j或Logback。 最后,Spring4.0的“libs”目录通常包含了Spring框架的核心...

    亲测喜马拉雅面试题(30问)无答案.zip

    13. **测试与调试**:单元测试、集成测试、压力测试的使用,以及如何通过日志分析和调试工具定位问题。 14. **版本控制**:Git的使用、分支管理策略、合并冲突解决等也会被关注。 15. **代码规范与编程思想**:...

    手机在线销售系统设计与实现.pptx

    单元测试、集成测试确保每个模块正常工作,压力测试检验系统在高并发情况下的稳定性,而持续集成/持续部署(CI/CD)流程则能确保代码质量和快速迭代。 综上所述,手机在线销售系统设计与实现是一个涵盖前端开发、后端...

    一个简单jcs实例,一看就会的程序

    在大型分布式系统中,通过缓存关键数据,可以显著减少数据库的访问压力,从而提升整体系统的处理能力。标题中的“一个简单JCS实例,一看就会的程序”指的是提供了一个易于理解的JCS应用示例,帮助开发者快速入门。 ...

    network test

    8. **性能测试**:通过工具如JMeter、LoadRunner进行压力测试,确保系统在高并发下仍能正常运行。 9. **自动化测试**:使用Selenium、JUnit等工具进行单元测试和集成测试,确保代码质量。 10. **监控与日志**:...

    9.9付费进群.zip

    这包括单元测试、集成测试和压力测试。 8. 法规遵循:考虑到涉及到金钱交易,开发过程还需遵守相关的法律法规,例如中国对于网络支付的相关政策,以及数据隐私保护法规。 9. 更新维护:上线后,应用需要持续更新和...

    sina sae app test

    - **压力测试**:模拟大量请求,检查系统的稳定性和性能。 - **端到端测试**:验证整个爬虫流程,从启动到数据存储的完整过程。 总结,"Sina SAE App Test"项目涉及到的技术点涵盖了云服务、网络爬虫、内容抓取、...

    EntIM(聊呗)

    10. **测试与调试**:为了确保软件的稳定性和用户体验,EntIM需要进行全面的测试,包括单元测试、集成测试、压力测试等,同时使用调试工具进行问题排查。 以上就是EntIM源码涉及的主要知识点,涵盖了即时通讯应用...

    Amoeba使用指南 20110928 pdf

    - **Amoeba for MongoDB**: 专门针对MongoDB数据库的解决方案。 - **Amoeba与类似产品的比较**:通过与MySQL Proxy、mongos等进行对比,突出了Amoeba的优势和特色。 #### 五、Amoeba的安装与运行 - **验证Java环境*...

    cen3031-project:佛罗里达大学软件工程简介 2014 年秋季 - ABET 项目后端

    7. **测试与调试**:单元测试、集成测试和压力测试是确保代码质量的关键步骤,开发者可能会使用JUnit、Mocha等工具进行测试。 8. **持续集成/持续部署(CI/CD)**:为了加速开发流程,团队可能采用了CI/CD工具,如...

Global site tag (gtag.js) - Google Analytics