iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >用Python编写WEB服务器压力测试工
  • 825
分享到

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

服务器压力测试Python 2023-01-31 01:01:24 825人浏览 泡泡鱼
摘要

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

最近在编写一个简单的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	

--结束END--

本文标题: 用Python编写WEB服务器压力测试工

本文链接: https://www.lsjlt.com/news/185116.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 用Python编写WEB服务器压力测试工
    最近在编写一个简单的WEB服务器,一个日常的工作就是测试服务器的性能,试用了MS的Web Application Stress,发现它居然不支持除80以外端口的测试,其他的如Loadrunner 太贵而且太大,试用版只支持10个并发用户...
    99+
    2023-01-31
    服务器 压力测试 Python
  • python的web压力测试工具-pyl
    pylot是python编写的一款web压力测试工具。使用比较简单。而且测试结果相对稳定。 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉跳,摸不着头脑。 下载 pylot官...
    99+
    2023-01-31
    测试工具 压力 python
  • 云服务器压力测试
    云服务器压力测试是指模拟云服务器上的高并发访问情况,以及服务器的负载情况,并根据压力测试结果对系统进行优化以提高性能和可靠性。下面是对云服务器压力测试步骤和注意事项的详细解释。 一、模拟高并发访问 云服务器的高并发访问可以通过以下步骤实现...
    99+
    2023-10-26
    服务器 压力测试
  • pyLot 基于python的压力测试工
    因为组内的产品是一个供上海甚至全球所有designer使用的网站,所以并发性很高,于是一直存在访问速度不佳的诟病。为了提高访问速度,就需要对该网站的性能进行测试。于是在网上查了并发性测试和自动化测试的工具。 本文讲的是测试页面访问...
    99+
    2023-01-31
    压力测试 pyLot python
  • 免费的Web压力测试工具有哪些
    这篇文章主要介绍“免费的Web压力测试工具有哪些”,在日常操作中,相信很多人在免费的Web压力测试工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”免费的Web压力测试...
    99+
    2024-04-02
  • apache压力测试工具怎么用
    本篇内容主要讲解“apache压力测试工具怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“apache压力测试工具怎么用”吧!写在前面在学习ab工具之前,我们需了解几个关于压力测试的概念吞吐...
    99+
    2023-06-30
  • 服务器压力测试怎么做
    服务器压力测试可以通过以下步骤进行:1. 确定测试目的和需求:确定测试目的和需求,例如测试服务器的性能、稳定性和容量等。2. 设计测...
    99+
    2023-06-06
    服务器压力测试 服务器
  • 云服务器压力测试方法
    云服务器压力测试是指模拟云服务器(Cloud Computing Vendor)在正常运行情况下的稳定性和性能情况,以检测云服务器的稳定性、可靠性、容量和响应时间等重要指标。 以下是几种常见的云服务器压力测试方法: 单元测试:模拟云服务...
    99+
    2023-10-26
    服务器 压力测试 方法
  • 如何使用Apache压力测试工具
    这篇文章将为大家详细讲解有关如何使用Apache压力测试工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下载进入apache官网 http://httpd.apache.org/ 下载apache即可启...
    99+
    2023-06-14
  • 阿里云服务器压力测试
    阿里云服务器的压力测试通常需要执行以下步骤: 确定测试用例:首先需要进行测试用例设计,包括模拟实际使用情况下服务器的负载均衡和资源调度情况。测试用例应该能够在模拟最大访问量或最大请求量的情况下,均衡和处理服务器的负载。 部署测试环境:测...
    99+
    2023-10-26
    阿里 服务器 压力测试
  • ab压力测试工具怎么使用
    本篇内容主要讲解“ab压力测试工具怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ab压力测试工具怎么使用”吧!一、ab的原理ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时...
    99+
    2023-06-28
  • 如何使用jmeter压力测试工具
    今天就跟大家聊聊有关如何使用jmeter压力测试工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是压力测试顾名思义:压力测试,就是 被测试的系统,在一定的访问压力下,看程序运行...
    99+
    2023-05-31
    jmeter
  • 云服务器压力测试怎么做
    云服务器的压力测试可以采用模拟客户端请求的方式,也可以采用真实的物理服务器进行。以下是一些可能用到的方法和步骤: 客户端请求测试:在真实的物理服务器上模拟用户访问云服务器上的资源,比如文件系统、数据库、应用程序等。通过测试可以确保云服务...
    99+
    2023-10-26
    怎么做 服务器 压力测试
  • HTTP/FTP压力测试工具siege怎么用
    HTTP/FTP压力测试工具siege怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。HTTP/FTP压力测试工具siege压力测试可以检测服务器的承载能力...
    99+
    2023-06-04
  • 如何使用ab工具对服务器进行API压力测试
    本篇文章为大家展示了如何使用ab工具对服务器进行API压力测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 系统吞吐量的简单介绍一个系统的吞度量(承压能力)与request对CPU的消耗、外部接...
    99+
    2023-06-22
  • apache中ab压力测试工具怎么用
    这篇文章主要介绍apache中ab压力测试工具怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、脚本说明该脚本支持ab大多常用参数,如果你需要更多参数,可以通过修改本脚本,加入你想要的即可。该脚本支持:1)、批...
    99+
    2023-06-02
  • 怎么用Python+Pytest实现压力测试
    这篇“怎么用Python+Pytest实现压力测试”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python+Pyte...
    99+
    2023-07-05
  • MySQL基准压力测试工具MySQLSlap怎么用
    小编给大家分享一下MySQL基准压力测试工具MySQLSlap怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!常用的解释:[...
    99+
    2024-04-02
  • 服务器网络压力测试怎么做
    服务器网络压力测试可以通过以下步骤进行:1. 定义测试目标:确定测试的目的、测试的范围、测试的时间和测试的用户数量等。2. 选择测试...
    99+
    2023-06-03
    网络压力测试
  • ApacheJMeter压力测试工具使用安装教程
    目录JMeter的使用安装及设置下载启动切换语言环境简单使用1.新建线程组2.线程组配置3.新建HTTP请求4.配置HTTP请求5.配置监听器6.运行JMeter的使用 安装及设置 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作