美文网首页
压力测试

压力测试

作者: 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)
    

    相关文章

      网友评论

          本文标题:压力测试

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