我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用Python编写WEB服务器压力测试工

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用Python编写WEB服务器压力测试工

最近在编写一个简单的WEB服务器,一个日常的工作就是测试服务器的性能,试用了MS的Web Application Stress,发现它居然不支持除80以外端口的测试,其他的如Loadrunner 太贵而且太大,试用版只支持10个并发用户,我Google到了100个并发用户的许可想试用一下,不过没有安装成功。想想这种压力测试实际上没啥技术含量,就自己用Python来编写了小段测试代码。

毫无疑问,编写这样的代码使用Python最合适,使用C/C++编写有点小题大做,使用C#编写编译又很麻烦,我是使用Editplus来写代码的,因为要考虑做不同的测试,只能边写边调整,使用Python,下载一个Python的加亮文件,设置User Tool 1 到 Python,运行的时候只需要按Ctrl+1,着实方便的很。

压力测试是通过模拟对WEB服务器的访问,进行记录响应时间,计算每秒处理数,记录上传下载的字节数。一般来说,一台测试机器上视机器的性能,发起 50~200的连接,基本就差不多了。考虑到测试机器的负载,一般使用多线程来完成多个WEB请求,幸运的是,Python对所有的这些支持的相当完善。以下是测试的代码

# code by 李嘉
# 禁止任何商业目的的转载
# 不对因使用代码产生任何后果负任何责任
# 转载请保留所有声明
import threading, time, httplib, random
# 需要测试的 url 列表,每一次的访问,我们随机取一个
urls = [
	"/test?page=",
	"/test2?orderby=a&page=",
	"/test2?orderby=d&page=",
]
MAX_PAGE = 10000
SERVER_NAME = "192.168.0.64:80"
TEST_COUNT = 10000
# 创建一个 threading.Thread 的派生类
class RequestThread(threading.Thread):
	# 构造函数
	def __init__(self, thread_name):
		threading.Thread.__init__(self)
		self.test_count = 0

	# 线程运行的入口函数
	def run(self):
		# 不直接把代码写在run里面是因为也许我们还要做其他形式的测试
		i = 0
		while i < TEST_COUNT:
			self.test_performace()
			i += 1
		#self.test_other_things()

	def test_performace(self):
		conn = httplib.HTTPConnection(SERVER_NAME)
		# 模拟 Keep-Alive 的访问, HTTP 1.1
		for i in range(0, random.randint(0, 100)):
			# 构造一个 url,提供随机参数的能力
			url = urls[random.randint(0, len(urls) - 1)];
			url += str(random.randint(0, MAX_PAGE))
			# 这就连接到服务器上去
			#print url
			try:
				conn.request("GET", url)
				rsps = conn.getresponse()
				if rsps.status == 200:
					# 读取返回的数据
					data = rsps.read()
				self.test_count += 1
			except:
				continue
			
		conn.close()
		
# main 代码开始

# 开始的时间
start_time = time.time()
threads = []
# 并发的线程数
thread_count = 100 

i = 0
while i < thread_count:
	t = RequestThread("thread" + str(i))
	threads.append(t)
	t.start()
	i += 1
# 接受统计的命令
word = ""
while True:
	word = raw_input("cmd:")
	if word == "s":
		time_span = time.time() - start_time
		all_count = 0
		for t in threads:
			all_count += t.test_count
		print "%s Request/Second" % str(all_count / time_span)
	elif word == "e":
		# 准备退出 其实 X 掉 窗口更加容易,没什么浪费的资源
		TEST_COUNT = 0
		for t in threads:
			t.join(0)
		break	

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用Python编写WEB服务器压力测试工

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用Python编写WEB服务器压力测试工

最近在编写一个简单的WEB服务器,一个日常的工作就是测试服务器的性能,试用了MS的Web Application Stress,发现它居然不支持除80以外端口的测试,其他的如Loadrunner 太贵而且太大,试用版只支持10个并发用户,我
2023-01-31

python的web压力测试工具-pyl

pylot是python编写的一款web压力测试工具。使用比较简单。而且测试结果相对稳定。这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉跳,摸不着头脑。下载pylot官网:www
2023-01-31

云服务器压力测试

云服务器压力测试是指模拟云服务器上的高并发访问情况,以及服务器的负载情况,并根据压力测试结果对系统进行优化以提高性能和可靠性。下面是对云服务器压力测试步骤和注意事项的详细解释。一、模拟高并发访问云服务器的高并发访问可以通过以下步骤实现:选择一种负载均衡方案,如动态负载均衡或者基于硬件的负载均衡。将服务器的请求分配到不同的服务器进行处理,并将其放置在不同的磁盘上,以模拟高并发访问情况。
2023-10-26

使用ab工具对服务器进行API压力测试

目录1 系统吞吐量的简单介绍2 测试方法2.1 客户端测试工具2.1.1 GET方法2.1.2 POST方法2.1.3 测试结果解读2.2服务器端检测方法3 实际测试3.1 shell脚本3.2 C++提取程序:使用了libxl.h4 测试
2022-06-04

阿里云服务器压力测试

阿里云服务器的压力测试通常需要执行以下步骤:确定测试用例:首先需要进行测试用例设计,包括模拟实际使用情况下服务器的负载均衡和资源调度情况。测试用例应该能够在模拟最大访问量或最大请求量的情况下,均衡和处理服务器的负载。部署测试环境:测试环境需要安装一些软件和工具来模拟正常运行的环境,例如负载均衡、防火墙和监控工具等。执行测试命令:测试命令可以是客户端的命令、系统命令或服务端脚本等。测试命令
2023-10-26

服务器压力测试怎么做

服务器压力测试可以通过以下步骤进行:1. 确定测试目的和需求:确定测试目的和需求,例如测试服务器的性能、稳定性和容量等。2. 设计测试方案:根据测试目的和需求,设计测试方案,包括测试的负载、测试的时间、测试的并发用户数等。3. 准备测试环境
2023-06-06

云服务器压力测试方法

云服务器压力测试是指模拟云服务器(CloudComputingVendor)在正常运行情况下的稳定性和性能情况,以检测云服务器的稳定性、可靠性、容量和响应时间等重要指标。以下是几种常见的云服务器压力测试方法:单元测试:模拟云服务器上的多个单元,检查每个单元的数据是否按预期工作。系统测试:模拟云服务器上的多个系统,检查每个系统的性能、可用性、可扩展性等指标是否符合预期。端到端测试:模拟云
2023-10-26

云服务器压力测试怎么做

云服务器的压力测试可以采用模拟客户端请求的方式,也可以采用真实的物理服务器进行。以下是一些可能用到的方法和步骤:客户端请求测试:在真实的物理服务器上模拟用户访问云服务器上的资源,比如文件系统、数据库、应用程序等。通过测试可以确保云服务器的性能和负载能力。模拟客户端请求测试:使用不同的浏览器和操作系统,比如Firefox或Chrome等,模拟客户端请求云服务器上的资源。通过测试可以确保云服务
2023-10-26

如何使用ab工具对服务器进行API压力测试

本篇文章为大家展示了如何使用ab工具对服务器进行API压力测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 系统吞吐量的简单介绍一个系统的吞度量(承压能力)与request对CPU的消耗、外部接
2023-06-22

云服务器压力测试怎么做的

云服务器的压力测试是评估云服务器可用性和性能的重要步骤。以下是一个简单的压力测试实践:定义压力测试场景:可以将测试任务(例如:负载测试)划分为不同的场景,例如:单用户场景多用户场景并发用户场景负载测试设置测试环境:可以使用现成的虚拟机或云服务器,也可以选择自己搭建一个测试环境。配置测试数据:使用测试数据来评估云服务器的性能和功能。例如,测试数据可以是CPU、内存和I/O的使用情况,可以使用内存或者CPU的日志记...
2023-10-27

服务器网络压力测试怎么做

服务器网络压力测试可以通过以下步骤进行:1. 定义测试目标:确定测试的目的、测试的范围、测试的时间和测试的用户数量等。2. 选择测试工具:选择可靠的测试工具,例如Apache JMeter、LoadRunner、Gatling等。3. 创建
2023-06-03

服务器压力测试命令有哪些

1. Apache JMeter:一款开源的压力测试工具,可模拟多种协议和场景。2. LoadRunner:商业压力测试工具,可模拟多种协议和场景。3. Gatling:开源的压力测试工具,使用Scala语言编写,可模拟HTTP协议。4.
2023-06-10

阿里云服务器压力测试怎么做

阿里云服务器压力测试的具体做法可以是:确定测试的目的和范围,确定可能的压力源。例如,您可能想要测试应用程序或服务在使用阿里云服务器进行访问时的性能,或者需要模拟高访问量情况下的性能。收集数据。可以收集以下数据:应用程序或服务在阿里云服务器上的日志输出,包括使用的API(例如GoogleWebServices和AmazonWebServices)、连接数、响应时间等。创建测试计划(TestPlan)。计划应包括测试的目标和时间表、所需的资源、...
2023-10-27

如何实现CentOS7服务器中的压力测试

如何实现CentOS7服务器中的压力测试,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用apache httd的ab工具可以进行压力测试。-n 2000总的请
2023-06-26

云服务器压力测试怎么做出来的

云服务器压力测试是指模拟服务器在不间断运行的情况下,对其性能进行测试的过程。以下是可能需要进行云服务器压力测试的情境和步骤:情境模拟服务器出现单点故障或网络中断。这可能包括网络故障、服务器故障或其他设备故障等。模拟服务器在某一时刻出现性能下降,例如访问大量数据、高峰负载或用户访问量突然增加等。步骤确定测试的范围和测试的目的,以及测试的时间和资源。测试的目的包括评估云服务器的性能、故障恢复能力、可靠性等...
2023-10-27

如何进行阿里云服务器压力测试

1.选择合适的压力测试工具在进行阿里云服务器压力测试之前,首先需要选择一款合适的压力测试工具。常见的压力测试工具包括ApacheJMeter、LoadRunner、Gatling等。根据自己的需求和技术背景选择一款适合的工具。2.设置测试环境在进行压力测试之前,需要搭建一个与实际生产环境相似的测试环境。这包括配置好服务
2023-10-27

HTTP服务压力测试工具及相关术语是什么

本篇内容介绍了“HTTP服务压力测试工具及相关术语是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!压测相关术语响应时间(RT) :指系统
2023-06-30

编程热搜

目录