这两天要做性能测试,自己没事用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……
分享到:
相关推荐
适合做智慧路灯,该脚本首先会把平台里面所有的设备都保存下来,且每个网关下的设备都会分开保存,然后通过jmeter来做csv参数化,做并发
常用的网站性能测试指标有:并发数、响应时间、吞吐量、性能计数器等。 1、并发数 并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。 2、响应时间 响应时间是一个系统最重要的指标之一,它的...
通过python与ffmpeg结合使用,可生成进行视频点播、直播的压力测试脚本。可支持不同类型的视频流,比如rtmp或者hls形式。 通过如下方式执行脚本:python multiRealPlay.py [rtmp|http] [thread counts] [interval ...
最后,考虑到`jd_maotai_seckill-master`这个压缩包文件名,我们可以推测这是一个项目仓库的主目录,其中可能包含了脚本源码、配置文件、测试用例等相关文件。用户可能需要阅读README文件了解如何安装和运行脚本,...
《基于Python的王者荣耀脚本详解》 在编程领域,Python以其简洁易懂的语法和强大的功能,成为许多初学者及专业开发者的首选语言。而王者荣耀作为一款热门的多人在线竞技游戏,吸引了大量的玩家,其中不乏对游戏自动...
"Python-一些有用的Python脚本"这个标题暗示了这个压缩包可能包含了一系列实用的Python代码片段或完整脚本,旨在帮助用户解决特定问题或提高开发效率。这些脚本可能涵盖了从数据处理到网络爬虫,再到自动化任务的...
Python的`platform`库可以用来检测运行环境并选择适当的执行方式。 标签中的"python"表明了我们使用Python编程语言来实现这个功能。Python因其易读性强和丰富的库支持而常被用于这类任务。"linux"和"mongodb"则强调...
【CC慢攻击Python脚本】是一种在网络编程领域中用于模拟慢速攻击的工具。慢攻击,也称为HTTP慢速攻击或慢loris攻击,是一种网络安全威胁,它通过占用服务器资源来瘫痪目标系统,而不是像传统DDoS攻击那样立即发送...
在这个脚本中,多进程可能被用来并发地进行多个游戏对局,以加速游戏进程。 5. **Python Shell**:Python Shell是Python的交互式解释器,用户可以直接在Shell中运行Python代码,查看结果。在这里,用户需要在Python...
4. **自动化测试框架Selenium**:如果华西抢号脚本涉及浏览器操作,比如点击按钮、处理动态加载的内容,可能使用了Selenium。Selenium能模拟真实用户的行为,支持多种浏览器,可以处理复杂的交互。 5. **定时任务**...
- **asyncio**:Python 3.6提供了更完善的异步I/O库asyncio,支持协程(coroutine)和事件循环,适合编写高性能网络服务和并发任务。 6. **错误处理**: - **捕获多个异常**:使用`except Exception as e:`可以...
7. **线程与并发**:如果脚本涉及到多任务并行,可能使用了`threading`或`concurrent.futures`模块,以便在同步时间的同时不影响其他系统进程。 8. **系统服务化**:为了让脚本在系统启动时自动运行,可能使用了`...
在本文中,我们将深入探讨如何使用Python 3.6.5版本编写脚本来实现软硬件监控服务,以及如何在离线环境下搭建Python环境。 首先,让我们关注标题中的"python3.6.5-python脚本实现软硬件监控服务"。这意味着我们将...
根据提供的文档内容,我们将详细阐述运行Python脚本的自动化测试平台设计及实现中涉及的关键知识点。 1. 自动化测试的重要性与Python脚本的应用 文档开篇提到,随着智能卡测试需求的增长,手动测试已经不能满足功能...
描述中提到的问题和解决方案集中在如何使Python脚本在Linux服务器上持续后台运行,并能并发处理多个用户的请求。 首先,原始的做法可能存在以下问题: 1. 脚本需要始终保持在后台运行,以便在用户请求时能够被调用...
本项目中的"python多线程批量访问url脚本"正是基于这个理念设计的。 该脚本采用了第三方库`grequests`,它是`requests`库的一个并行版本,能够支持异步的HTTP请求。`requests`库是Python中广泛使用的HTTP客户端,而...
标题中的"Python自动化导出zabbix数据并发邮件脚本"是指使用Python编程语言编写的一段程序,该程序能够自动从Zabbix监控系统中提取数据,并将这些数据整理成报告,随后通过电子邮件发送给相关人员。Zabbix是一个开源...
17. **并发与多线程**:Python的threading模块支持多线程编程,asyncio模块则提供了异步I/O支持。 18. **GUI编程**:如Tkinter和PyQt库可以帮助创建图形用户界面。 19. **部署与打包**:使用PyInstaller或cx_...
在IT行业中,跨语言交互是常见的需求,例如在前端JavaScript(如Node.js)环境中调用后端Python脚本。这个“node调用python脚本”的主题涉及到如何在Node.js环境中执行Python代码,以便利用Python的强大功能,比如...