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 变化不大,可能查询有差别。

insert

 

 

 

 

sage:基于云的数学软件系统

Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface.

可以在http://www.sagenb.org/home/ 注册并登陆后建立工作清单(worksheets),清单以命令行形式支持多种开源包,比如NTL(Number Theory Library http://sage.math.washington.edu/tmp/sage-2.8.12.alpha0/doc/ref/module-sage.libs.ntl.all.html)。其未来定位应该是将用户本地的Matlab 迁移到云端,以后用户就不用下载、安装那么大的安装文件了~~

NCCloud 实现

之前就写了博文就FAST12 的NCCloud 进行了分析,今天写了个NCCloud 的一个修复部分的实现,只对相应的编、解码矩阵进行操作,不涉及具体的文件读、写和传输操作。

NCCloud 的失效节点修复特点有两个:一是不需要节点内部的计算,对一般的云存储具有通用性;二是修复是功能性修复(functional repair),即修复的节点数据和失效的节点数据不必相同。
继续阅读

NCCloud: Applying Network Coding for the Storage Repair in a Cloud-of-Clouds

该文出现在FAST12 会议上,介绍了在多个云存储服务提供商之上,利用随机网络编码(RNC)搭建一个可靠存储系统,实现了功能性最小存储再生码(F-MSR)来减少修复数据的带宽。

优点:提供了一种实现MSR 的简单方法。

问题:在已经非常可靠的云存储之上做编码是否得不偿失,而且文中实现的(4,2) 编码实用性有待讨论。

继续阅读