测试条件:
服务端:CPU:8核
内存:32G
系统: Ubuntu 16.04
客户端: ycsb-0.5.0 (与服务端在不同的两台机器上)
MongoDB内存限制:
$ vim /etc/mongod.conf
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 1
测试命令:
./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://192.168.10.12:27017/ycsb?w=1 -threads 100 > outputLoad.txt
./bin/ycsb run mongodb -s -P workloads/workloada -p mongodb.url=mongodb://192.168.10.12:27017/ycsb?w=1 -threads 100> outputRun.txt
将workloads/workloada的测试数据条数改成300万条。
测试结果:
MongoDB限制内存大小 | 32M | 128M | 512M | 1G | 2G | 4G | |
读100% | 请求数 | 300w | 300w | 300w | 300w | 300w | 300w |
错误 | 0 | 0 | 0 | 0 | 0 | 0 | |
QPS | 42197 | 59944 | 61414 | 63516.4 | 62553 | 60875 | |
95%响应时间(ms) | 6.7 | 3.5 | 3.5 | 2.5 | 1.7 | 1.8 | |
MongoDB内存 | 172M | 233M | 587M | 1.05G | 1.94G | 3.34 | |
MongoDB CPU占用 | 680% | 650% | 510% | 445% | 345% | 305% |
测试结论:
从结果来看,MongoDB的内存对吞吐率QPS的影响不是很大,当内存达到233M的时候,QPS几乎达到最大。分配的内存继续增大时,QPS没有明显的增加,但是CPU的使用率下降了。