美文网首页
压力测试

压力测试

作者: g0 | 来源:发表于2017-11-23 15:58 被阅读127次

原文发表于http://www.cnblogs.com/reach296/


最近对mongoDB数据库进行性能分析,需要对数据库进行加压。

加压时,最初采用threading模块写了个多线程程序,测试的效果不理想。

单机读数据库每秒请求数只能达到1000次/s.而开发的java程序请求数能达到6000-7000次/s。

证明受限于GIL,python的多线程表现确实不理想。

后来,采用了multiprocessing模块,采用多进程的方式进行加压。

经过测试证明,multiprocessing的性能还是不错,和开发java程序的性能相当。

脚本如下:

#!/usr/bin/env python

from pymongo import Connection,MongoClient,MongoReplicaSetClient
import multiprocessing
import time


#connection = MongoClient('mongodb://10.120.11.212:27017/')
#connection = Connection(['10.120.11.122','10.120.11.221','10.120.11.212'], 27017)
'''数据库采用了读写分离设置,连接mongoDB的模式要配对'''
connection=MongoReplicaSetClient(
        '10.120.11.122:27017,10.120.11.221:27017,10.120.11.212:27017',
        replicaSet='rs0',
        read_preference=3
#        read_preference=3
        )
db = connection['cms']
db.authenticate('cms', 'cms')

#计时器
def func_time(func):
        def _wrapper(*args,**kwargs):
                start = time.time()
                func(*args,**kwargs)
                print func.__name__,'run:',time.time()-start
        return _wrapper
#插入测试方法
def insert(num):
        posts = db.userinfo
        for x in range(num):
                post = {"_id" : str(x),
                        "author": str(x),
                        "text": "My first blog post!"
                        }
             posts.insert(post)
#查询测试方法
def query(num):
    get=db.device
    for i in xrange(num):
         get.find_one({"scanid":"010000138101010000009aaaaa"})


@func_time
def main(process_num,num):
    pool = multiprocessing.Pool(processes=process_num)
    for i in xrange(num):
        pool.apply_async(query, (num, ))
    pool.close()
    pool.join()
    print "Sub-process(es) done."

if __name__ == "__main__":
#    query(500,1)
        main(800,500)

相关文章

  • 性能测试和压力测试

    性能测试和压力测试 什么是压力测试 软件压力测试和软件性能测试是不同的,区别在于测试的目的 软件压力测试是为了发现...

  • 测试驱动开发总结

    第25章 压力循环 压力越大、测试越少。测试越少,错误越多。错误越多,压力越大 压力越大、自动测试越多。自动测试越...

  • 面试题汇总2

    61、简述负载测试与压力测试的区别。 参考答案: 压力测试(Stress Testing) 压力测试的主要任务就是...

  • 2019-11-03

    61、简述负载测试与压力测试的区别。 参考答案: 压力测试(Stress Testing) 压力测试的主要任务就是...

  • 压力测试

    需求描述 编程压力测试脚本对网上商城和移动商城进行压力测试, 得出压力测试报告. 压力测试需要覆盖的范围包括(主页...

  • 压力测试

    今天是周六,也是6月的最后一天。但是我却来公司加班了。为什么要来公司加班呢?主要是开发的模块出现了bug。究根结底...

  • 压力测试

    >>格 风 压力来自于吃饭、睡觉再吃饭、再睡觉反复测试而无话可说又必须说话说还是不说这不是一个问题问题是这么好的天...

  • 压力测试

    原文发表于http://www.cnblogs.com/reach296/ 最近对mongoDB数据库进行性能分析...

  • 压力测试

    压力测试需要注意点: 并发数 请求文件的大小和请求数量的笛卡尔积 在请求数相同的情况下,最大支持的用户并发数 压力...

  • 压力测试

    # 常用指标 服务运行在线上是否稳定需要看几个指标,你可以根据你系统的具体业务场景着重来看某个指标。以下是整理的一...

网友评论

      本文标题:压力测试

      本文链接:https://www.haomeiwen.com/subject/dgbzvxtx.html