使用python对URL进行并发压力测试
背景:使用python进行并发请求,进行压力测试
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import threading import urllib2 import time from Queue import Queue # 配置参数 url = "http://192.xxx10" # 替换为你要测试的URL num_requests = 10000000 # 总请求数 concurrent_threads = 400 # 并发线程数 # 记录成功和失败的请求数 success_count = 0 failure_count = 0 lock = threading.Lock() def send_request(q): global success_count, failure_count while not q.empty(): try: response = urllib2.urlopen(url, timeout=5) if response.getcode() == 200: with lock: success_count += 1 qps = success_count % 100 if qps == 0: print success_count else: with lock: failure_count += 1 except Exception as e: with lock: failure_count += 1 finally: q.task_done() if __name__ == "__main__": print "Starting load test on %s" % url start_time = time.time() # 创建队列并填充任务 q = Queue(maxsize=num_requests) for _ in range(num_requests): q.put(1) # 创建并启动线程 threads = [] for i in range(concurrent_threads): t = threading.Thread(target=send_request, args=(q,)) t.daemon = True t.start() threads.append(t) # 等待所有任务完成 q.join() # 结束时间 end_time = time.time() elapsed_time = end_time - start_time print "\n--- Load Test Results ---" print "Total Requests: %d" % num_requests print "Concurrency Level: %d" % concurrent_threads print "Successful Requests: %d" % success_count print "Failed Requests: %d" % failure_count print "Time taken for tests: %.2f seconds" % elapsed_time print "Requests per second: %.2f" % (num_requests / elapsed_time)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏