作者:容易   2013-03-29   17:38:41


    通过twisted的异步模型以及数据库连接池,模拟高并发对oracle数据库进行压力测试,有不足之处和疑问可以留言交流。

    测试过程中可以根据实际情况,同时模拟不同SQL语句实现复杂的并发测试。

 

以下是简单测试的代码,假如应用需要新上线某个数据库操作,可以初步判断高并发情况下对数据库性能和负载造成的影响。

 

测试代码中的dbms_lock.sleep(1),在这里的目的是为了测试twisted数据库连接池,实际测试中可以取消。

 

#-*-coding:utf-8-*-
from twisted.internet import epollreactor
epollreactor.install()
from twisted.internet import reactor
from twisted.enterprise import adbapi
import time
reactor.suggestThreadPoolSize(100)
def m_sql(x,y):
        k={}
        k['id']=x
        k['name']='haha'
        dbpool=y
        dbpool.runOperation("begin insert into test values(:id,:name) ; dbms_lock.sleep (1); end;",k)
def loop_factory(x):
        dbpool = adbapi.ConnectionPool('cx_Oracle', user='test', password ='oracle', dsn='192.168.20.205:1521/test',cp_min=80,cp_max=100)
        for i in xrange(1,x):
                m_sql(i,dbpool)
        stopreactor(10)
def stopreactor(i):
        time.sleep(i)
        reactor.stop()
def main():
    reactor.callWhenRunning(loop_factory,10000)
    reactor.run()
if __name__ == '__main__':
    main()

 

 

One Response


    还没有评论!
1  

Leave your comment

请留下您的姓名(*)

请输入正确的邮箱地址(*)

请输入你的评论(*)


感谢开源 © 2016. All rights reserved.&3Q Open Source&^_^赣ICP备15012863号-1^_^
乐于分享共同进步 KreativeThemes