模拟ab压力测试

#!/usr/bin/env python# -*- coding:utf-8 -*-# 说明:"""api接口压力测试url = "http://gd.wangfanwifi.com:16621/api/userAuth?time=300&product=wxlogin&limit=10000&open_type=temp""""# code by Shurrikimport threading, time, httplib

HOST = ‘gd.wangfanwifi.com‘ #主机PORT = ‘16621‘ #端口URI = "/api/userAuth?time=300&product=wxlogin&limit=10000&open_type=temp" #相对地址

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 (‘[返回内容]: %s‘% res.read())            print (‘[http状态码]: %s‘ % res.status)            print (‘\n‘)            start_time            if res.status == 200:                TOTAL += 1                SUCC += 1            else:                TOTAL += 1                FAIL += 1            time_span = time.time()-st            print (‘线程: %s\t时间: %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 += c1            EXCEPT += 1        conn.close()    def maxtime(self,ts):        global MAXTIME        # print ‘时间: %s‘ % ts        if ts > MAXTIME:            MAXTIME = ts    def mintime(self,ts):        global MINTIME        if ts < MINTIME:            MINTIME = ts

# main 代码开始if __name__ == "__main__":    print (‘=‘*50+‘ api接口性能测试开始 ‘+‘=‘*50)    # 开始的时间    start_time = time.time()    # 并发的线程数    thread_count = 400    print (‘并发数: %d‘ % thread_count)

    i = 0    while i <= thread_count:        t = RequestThread("thread" + str(i))        t.start()        i += 1

    t = 0    #并发数所有都完成或大于60秒就结束    while TOTAL < thread_count or t > 60:        print (‘总数: %d\t成功: %d\t失败: %d\t出错: %d\n‘ % (TOTAL,SUCC,FAIL,EXCEPT))        t += 1        time.sleep(1)

    print (‘=‘*50+‘ api接口性能测试结束 ‘+‘=‘*50)    print (‘api接口地址: http://%s:%s%s‘ % (HOST,PORT,URI))    print (‘并发数: %d‘ % thread_count)    print (‘总数: %d\t成功: %d\t失败: %d\t出错: %d‘ % (TOTAL,SUCC,FAIL,EXCEPT))    print (‘成功率: %0.2f\t失败率: %0.2f\t出错率: %0.2f‘ % (float(SUCC)/float(TOTAL),float(FAIL)/float(TOTAL),float(EXCEPT)/float(TOTAL)))    # print ‘最大响应时间: ‘,MAXTIME    # print ‘最小响应时间: ‘,MINTIME    # print ‘大于3秒的请求数: %d\t百分比: %0.2f‘ % (GT3,float(GT3)/TOTAL)    # print ‘小于3秒的请求数: %d\t百分比: %0.2f‘ % (LT3,float(LT3)/TOTAL)    print (‘=‘*50+‘ api接口性能测试结束 ‘+‘=‘*50)
时间: 2024-08-02 13:33:54

模拟ab压力测试的相关文章

简单模拟一下ab压力测试

在学习ab工具之前,我们需了解几个关于压力测试的概念 吞吐率(Requests per second)概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数.某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率.计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests 并发连接数(The number of concu

ASP.NET 页面缓存OutputCache用法实例(附ab压力测试对比图)

本文主要介绍Web窗体页面中的使用方法,MVC中使用方法,大家自行百度. 一.简单一行指令即可实现 <%@ OutputCache VaryByParam="none" Duration="300" %> 这样整个页面就被缓存了,由于我是首页进行的缓存,没有任何参数所以VaryByParam值设置为none,如果希望通过指定的参数来缓存内容可以设置"id;classid"这种形式,或者干脆就用"*",通过所有参数来

apache优化之防盗链,日志拆分,ab压力测试

Apache调优之apache防盗链.日志拆分和ab压力测试 1.apache防盗链 盗链,全称是盗取链接,假如我们的网站有很多好看的图片,别人可以查看我们网站图片的链接,然后应用在他的网站上,这样的话,去访问他的网站,实际上消耗的是我们的流量(因为实际链接在我们这里),这样我们就不得不去配置防盗链,使得别人不能复制我们图片的链接 要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示

Apache 深度优化 ab压力测试

网站性能压力了测试是服务器网站性能调优过程中必不可少的一环,只有让服务器处在高压的情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试工具目前最常见的有以下几种:ab.http_load.webbench.siege.ab是Apache自带的压力测试工具,非常实用,可以模拟多线程并发请求,测试服务器负载压力.它不仅可以对Apache服务器进行网站访问压力测试,而且可以对其他类型服务器进行压力测试.ab对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多内存,但却会

Apache网页深入优化之ab压力测试、工作模式与目录属性优化

ab压力测试工具 Apache自带压力测试工具ab,简单易用,且可以模拟各种条件对Web服务器发起测试请求.ab工具可以直接在Web服务器本地发起测试请求,这对于需要了解服务器的处理性能至关重要,因为它不包括数据的网络传输时间以及用户PC本地的计算时间,从而可以通过观测各种时间指标判断Web服务器的性能,以便进行参数的优化调整. 在进行性能调整优化过程中,可用ab压力测是工具进行优化效果的测试:1.优化前先使用ab进行压力测试2.优化后,重启服务,再使用ab进行压力测试3.对比两次测试的结果,看

Apache服务ab压力测试

将ab压力测试之前,先讲解一下相关概念: 吞吐率(Requests per second) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数.某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率. 计算公式: 总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests 并发连接数(The number of concurrent

apache ab压力测试报错apr_socket_recv

apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104)) apache 自带的ab工具测试,当并发量达到1000多的时候报错如下: [[email protected] ~]# ab -n 100000 -c 1000 http://192.168.2.170/index.htmlThis is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Ada

php-xcache编译安装,及ab压力测试

[[email protected] local]# tar -xf xcache-3.2.0.tar.bz2 [[email protected] xcache-3.2.0]# man -M /usr/local/php/php/man phpize 查看帮助文档 [[email protected] xcache-3.2.0]# /usr/local/php/bin/phpize [[email protected] xcache-3.2.0]# man -M /usr/local/php/

AB压力测试(Windows)

1.Apache服务器安装 链接: http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html 2.AB压力测试帮助 http://wangshuaibo.iteye.com/blog/935454 3.帮助文档 ① Apache报ServerRoot must be a valid directory 解决方法:http://jingyan.baidu.com/article/915fc41491c68751384b2040.h