• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > 1亿条记录的MongoDB数据库随机查询性能测试

1亿条记录的MongoDB数据库随机查询性能测试

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mongodb数据库,mongodb数据库设计,mongodb数据库下载,mongodb数据库教程,mongodb数据库文件等相关知识,希望本文的分享对您有所帮助

mongdb性能压力测试,随机查询,数据量1亿条记录

操作系统centos6.4x64位

从测试结果看,当mongodb将数据全部载入到内存后,查询速度根据文档的大小,性能瓶颈通常会是在网络流量和CPU的处理性能(该次测试中当数据全部在内存后,纯粹的查询速度可以稳定在10W/S左右,系统load可以维持在1以下,由于此时CPU已经被使用到极限了,当并发再大时load值会直线飙升,性能急剧下降)。

压力生成服务器与Mongodb服务器基本配置

cpu型号:Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz

内存:64G

硬盘:10K转速 6块做RAID0,raid卡cache 1G(磁盘的IO性能决定MONGODB将非热点数据载入到内存的速度,当热点数据全部在内存后,IO性能可以忽略)

网卡速度:接入千兆交互机,速度1000MB

数据结构,user_id为索引键值为0-99999999,数据总大小约37G左右,全部载入内存后约32G

> db.thing.findOne();

{

        "_id" : ObjectId("51fd6830c6db9d15676f89ef"),

        "ip" : "192.168.168.254",

        "g_roup" : "kiwi",

        "mac" : "of:fd:67:8c:2f:8f",

        "address" : "hongmei1801num",

        "user_id" : 10000000,

        "name" : "user10000000",

        "title" : "system",

        "database" : "mongodb",

        "telphone" : NumberLong("15718441234"),

        "mail" : "yj@chinapnr.com",

        "os" : "win7",

        "company" : "chinapnr"

}

压力生成脚本开启40个进程,并发随机查询

[root@mdb-166 app]# cat mselectmongodb.py 

import time,pymongo,multiprocessing,random,string 

class SqlToMongo:

    def m_sql(self,x,y):

        server="mongodb://python:oracle@192.168.4.167:27017/syslog"

        conn=pymongo.Connection(server)

        db=conn.syslog

        col=db.thing

        start=x*y

        end=start+x

        for i in xrange(start,end):

            d=random.randint(start,end)

            val=col.find({"user_id":d})

            a=list(val)

def gen_load(x,taskid):

    task=SqlToMongo()

    print "task %s start!" % taskid

    task.m_sql(x,taskid)

if __name__ == "__main__": 

        inser_number=2500000

        pro_pool = multiprocessing.Pool(processes=101)

        print time.strftime('%Y-%m-%d:%H-%M-%S',time.localtime(time.time()))

        start_time=time.time()

        manager = multiprocessing.Manager()

        for i in xrange(40):

                taskid=i  

                pro_pool.apply_async(gen_load,args=(inser_number,taskid)) 

        pro_pool.close()

        pro_pool.join()

        elapsed = time.time()-start_time

        print elapsed

        time.sleep(1)

        print "Sub-process(es) done." 

压力生成服务器负载,同时开启80个并发时抗不住了

top - 17:12:59 up 2 days,  7:34,  4 users,  load average: 35.87, 29.41, 18.16

Tasks: 487 total,  64 running, 423 sleeping,   0 stopped,   0 zombie

Cpu0  : 88.1%us, 10.6%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu1  : 87.7%us, 10.9%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu2  : 87.7%us, 11.0%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu3  : 88.0%us, 10.3%sy,  0.0%ni,  1.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu4  : 87.7%us, 11.0%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu5  : 88.7%us,  9.9%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu6  : 40.2%us,  3.3%sy,  0.0%ni,  0.3%id,  0.0%wa,  0.0%hi, 56.1%si,  0.0%st

Cpu7  : 89.7%us,  8.9%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu8  : 88.1%us, 10.6%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu9  : 89.7%us,  9.3%sy,  0.0%ni,  1.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu10 : 88.7%us,  9.9%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu11 : 88.4%us, 10.2%sy,  0.0%ni,  1.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:  65909128k total,  5409148k used, 60499980k free,    90680k buffers

Swap:  8388600k total,        0k used,  8388600k free,  4392420k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                        

 13342 root      20   0  178m 9056 1480 R 15.9  0.0   5:15.79 python mselectmongodb.py                                                                       

 13430 root      20   0  178m 8976 1468 R 15.9  0.0   3:05.26 python mselectmongodb.py                             

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MongoDB的基础知识简介
  • mongodb在建立一个T级别的数据库时,进程挂掉的解决方法
  • MongoDB数据库查询性能提高40倍的经历分享
  • MongoDB在不同主机间复制数据库和集合的教程
  • 浅谈MongoDB的备份方式
  • MongoDB中的MapReduce简介
  • MongoDB简介 MongoDB五大特色
  • MongoDB数据库的特色和优点介绍
  • MongoDB导出查询结果到文件例子
  • Mongodb数据库的备份与恢复操作实例

相关文章

  • 2017-05-11Linux系统下MongoDB的简单安装与基本操作
  • 2017-05-11MongoDB在不同主机间复制数据库和集合的教程
  • 2017-05-11MongoDB中MapReduce编程模型使用实例
  • 2017-05-11MongoDB备份、还原、导出、导入、克隆操作示例
  • 2017-05-11MongoDB中javascript脚本编程简介和入门实例
  • 2017-05-11MongoDB 学习笔记
  • 2017-05-11MongoDB 学习笔记(一)-MongoDB配置
  • 2017-05-11mongoDB 实现主从读写分离实现的实例代码
  • 2017-05-11mongodb在建立一个T级别的数据库时,进程挂掉的解决方法
  • 2017-05-11MongoDB最基本命令速查笔记

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Mongodb中MapReduce实现数据聚合方法详解
    • mac下使用brew 安装mongodb的方法教程
    • 阿里云CentOS7安装Mongodb教程
    • MongoDB教程之索引介绍
    • MongoDB的基础查询和索引操作方法总结
    • mongodb数据库游标的使用浅析
    • MongoDB与MySQL常用操作语句对照
    • mongodb 数据类型(null/字符串/数字/日期/内嵌文档/数组等)
    • MongoDB导出查询结果到文件例子
    • MongoDB中的bson介绍和使用实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有