`
darklipeng
  • 浏览: 125008 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

python并发测试脚本

阅读更多

这两天要做性能测试,自己没事用python写了个脚本,用于压力测试

 

# -*- coding: utf8 -*-
# code by Shurrik
import threading, time, httplib
HOST = "www.baidu.com"; #主机地址 例如192.168.1.101
PORT = 80 #端口
URI = "/?123" #相对地址,加参数防止缓存,否则可能会返回304
TOTAL = 0 #总数
SUCC = 0 #响应成功数
FAIL = 0 #响应失败数
EXCEPT = 0 #响应异常数
MAXTIME=0 #最大响应时间
MINTIME=100 #最小响应时间,初始值为100秒
GT3=0 #统计3秒内响应的
LT3=0 #统计大于3秒响应的
# 创建一个 threading.Thread 的派生类
class RequestThread(threading.Thread):
    # 构造函数
    def __init__(self, thread_name):
        threading.Thread.__init__(self)
        self.test_count = 0

    # 线程运行的入口函数
    def run(self):

        self.test_performace()


    def test_performace(self):
            global TOTAL
            global SUCC
            global FAIL
            global EXCEPT
            global GT3
            global LT3
            try:
                st = time.time()
                conn = httplib.HTTPConnection(HOST, PORT, False)  
                conn.request('GET', URI)
                res = conn.getresponse()  
                #print 'version:', res.version  
                #print 'reason:', res.reason  
                #print 'status:', res.status  
                #print 'msg:', res.msg  
                #print 'headers:', res.getheaders()
                start_time
                if res.status == 200:
                    TOTAL+=1
                    SUCC+=1
                else:
                    TOTAL+=1
                    FAIL+=1
                time_span = time.time()-st
                print '%s:%f\n'%(self.name,time_span)
                self.maxtime(time_span)
                self.mintime(time_span)
                if time_span>3:
                    GT3+=1
                else:
                    LT3+=1                    
            except Exception,e:
                print e
                TOTAL+=1
                EXCEPT+=1
            conn.close()
    def maxtime(self,ts):
            global MAXTIME
            print ts
            if ts>MAXTIME:
                MAXTIME=ts
    def mintime(self,ts):
            global MINTIME
            if ts<MINTIME:
                MINTIME=ts
        
# main 代码开始
print '===========task start==========='
# 开始的时间
start_time = time.time()
# 并发的线程数
thread_count = 300

i = 0
while i <= thread_count:
    t = RequestThread("thread" + str(i))
    t.start()
    i += 1
t=0
#并发数所有都完成或大于50秒就结束
while TOTAL<thread_count|t>50:
        print "total:%d,succ:%d,fail:%d,except:%d\n"%(TOTAL,SUCC,FAIL,EXCEPT)
        print HOST,URI
        t+=1
        time.sleep(1)
print '===========task end==========='
print "total:%d,succ:%d,fail:%d,except:%d"%(TOTAL,SUCC,FAIL,EXCEPT)
print 'response maxtime:',MAXTIME
print 'response mintime',MINTIME
print 'great than 3 seconds:%d,percent:%0.2f'%(GT3,float(GT3)/TOTAL)
print 'less than 3 seconds:%d,percent:%0.2f'%(LT3,float(LT3)/TOTAL)

 300并发试着测了iteye几次,还是被封了一次IP……

5
1
分享到:
评论
3 楼 晴天i 2016-07-17  
写得真好,真好,配得注释也很好!! 
2 楼 晴天i 2016-07-17  
能评论了吗
1 楼 u010530067 2015-11-06  
怎么运动你写的这个脚本?

相关推荐

    mqtt-python+jmeter脚本做并发测试.txt

    适合做智慧路灯,该脚本首先会把平台里面所有的设备都保存下来,且每个网关下的设备都会分开保存,然后通过jmeter来做csv参数化,做并发

    python实现接口并发测试脚本

    常用的网站性能测试指标有:并发数、响应时间、吞吐量、性能计数器等。 1、并发数 并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。 2、响应时间 响应时间是一个系统最重要的指标之一,它的...

    python+ffmpeg视频并发直播压力测试

    通过python与ffmpeg结合使用,可生成进行视频点播、直播的压力测试脚本。可支持不同类型的视频流,比如rtmp或者hls形式。 通过如下方式执行脚本:python multiRealPlay.py [rtmp|http] [thread counts] [interval ...

    Python自动化导出zabbix数据并发邮件脚本

    主要介绍了Python自动化导出zabbix数据并发邮件脚本,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    python并发技术实现(多线程、多进程)

    压缩包内包含四个文件,实现的效果都是通过多线程或多进程执行加法运算; multiprocess_queue,通过任务队列方式实现多进程任务;(multiprocessing模块) multithread_queue,通过任务队列方式实现多线程任务;...

    对python多线程SSH登录并发脚本详解

    于是用多线程进行python并发记录 因为需要安装的一些依赖和模块比较麻烦,脚本完成后再用pyinstaller打成exe包分发给其他测试人员一起使用。 1.脚本编写 # -*- coding: utf-8 -*- import paramiko import threading...

    python性能测试功能脚本包.zip

    python 多进程multiprocessing 协程+异步http syncio+aiohttp 读写redis+Kafka 延时处理--调度 apscheduler shell 高并发后台运行脚本

    基于Node.js的Python脚本调用方法

    Node.js自从问世以来,由于其高并发,语言一致等优点,深受开发者的青睐。特别是在前后端分离逐渐成为业界主流的今天,...提出了一种基于Node.js的Python脚本调用方法,并以一个在线中文分词系统的实例,表明该方法的有效性。

    Python并发之多进程的方法实例代码

    主要介绍了Python并发之多进程的方法实例代码,文中也提到了进程与线程的共同点,需要的朋友跟随脚本之家小编一起看看吧

    Python aiohttp百万并发极限测试实例分析

    本文实例讲述了Python aiohttp百万并发极限测试。分享给大家供大家参考,具体如下: 本文将测试python aiohttp的极限,同时测试其性能表现,以分钟发起请求数作为指标。大家都知道,当应用到网络操作时,异步的代码...

    python shell

    python并发处理应用实例 shell脚本应用实例

    python抓取zabbix-screen 线路中当天及7天前图并发html邮件.docx

    python抓取两个数据中心zabbix-screen图中所有线路----当天及7天前丢包延时流量等指标图-----并发html邮件。 本人亲自编写的提取当做互联网日报脚本。 运行环境Python3.6 运行:python zabbix-screen.py 解释: 1....

    Python示例-从基础到高手PDF

    第 21 章 服务端 socket 开发之多线程和 gevent 框架并发测试[python 语言] 第 22 章 利用 pypy 提高 python 脚本的执行速度及测试性能 第 23 章 python 实现 select 和 epoll 模型 socket 网络编程 第 24 章 对 ...

    秒杀多线程

    秒杀多线程

    Mod_Python中文文档

    mod_python是apache组织的一个项目,...Ab 用来对4种脚本进行测试,所有的都是从标准cgi模块输入(因为这是一个典型Python cgi脚本开始的方式), 然后输出一个简单的单词"Hello!"。这个结果是基于10000次并发为1的请求。

    python连接数据库推送微信信息.py

    python脚本 连接数据库 从数据库中取值(调用存储过程),发送到微信端,

    使用Python控制摄像头拍照并发邮件

    主要介绍了使用Python控制摄像头拍照并发邮件的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics