MongoDB 性能测试

数据写入(插入)测试:数据源为文本文件,一行一条记录(record),长度约为125B,使用单线程Pymongo 的 insert_one() 方法写入,所有记录写入到相同collection(类似于数据库中的表)。


  

环境一(主要特征:老机器单机两块独立硬盘、新版本):

  
  
  
  
  • CPU:Intel Core Quad Q8300 (2.5GHz) with 2MB cache
  • 内存:DDR2 2×2 GB
  • 硬盘:HDD1,HDD2;
  • OS:Ubuntu 14.04
  • MongoDB:V3.2.7
从本机HDD2 读取写入装在HDD1上的MongoDB 中, 速度约为1000 records 每秒,约等于 0.1MB/sCPU 占用率100%。瓶颈在CPU(解析数据)。 环境二(主要特征:服务器CPU单机两块独立硬盘SSD老版本):
  • CPU:Intel Xeon E3-1231(3.4GHz) with 8MB cache
  • 内存:DDR3 2×8 GB
  • 硬盘:SSD1 (128GB),HDD2;
  • OS:Ubuntu 14.04
  • Mongodb:V2.4.9
从本机HDD2 读取写入装在SSD1 上的MongoDB中, 速度约为6000-8000 records 每秒,约等于1MB/s,CPU占用率100%(python 80%,MongoDB 20%)。两点说明如下:
  1. 改环境测试时间较长,到记录8710万条记录,插入速度没有下降。
  2. 五个线程(一个生产者读取记录,四个消费者写入记录)速度下降为5500 records 每秒(0.6MB/s),印证了collection 全局锁。
环境三(主要特征:网络双机器老版本):
  • 服务器配置为环境二服务器
  • 客户端CPU:Intel i7-4790K 4GHz
  • 客户端内存:DDR3 2×8 GB
  • 客户端硬盘:HDD
  • 客户端OS:Ubuntu 14.04
  • MongoDB:V3.2.7
从客户端HDD 中读取数据写入到服务器SSD 中的MongoDB 中, 速度为1500-2000 records 每秒,客户端CPU占用率20%,瓶颈可能在网络协议。 同样是用一个线程读取数据,多线程写入数据时,速度有所提升(因为网络得到更好使用)。但当线程数增加到8个以上时,速度变化不大,速度稳定在6100 records 每秒(0.63MB/s)。此时,服务器MongoDB 是瓶颈,MongoDB服务器CPU 使用率37%左右。 环境四(环境二和环境三换批量插入) 硬件环境与环境二、环境三相同,为支持批量插入数据(bulk),使用新版本(V2.6 以上)。批量每次插入10000条数据(1.3MB) 环境三单线程可以达到15000 records 每秒(TCP/IP网络还是对长报文比较友好,短报文只能用多线程来堆了,后经测试,四线程也只能达到18000 records 每秒) 环境二单线程可以达到30000 records 每秒(4MB/s) 插入速度较慢,SSD 换成HDD 变化不大,可能查询有差别。 MongoDB 性能测试_第1张图片        

查看原文:http://blog.foool.net/2016/07/mongodb-%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95/

你可能感兴趣的:(MongoDB 性能测试)