这是基于实际业务的压力测试,测试机和服务器的配置都很低。
测试机。本人机器,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 |