美文网首页
PHP压力测试

PHP压力测试

作者: flycorn | 来源:发表于2016-12-13 18:08 被阅读1350次

    参考环境:
    osx 10.11.5

    1、ab

    ab的全称是Apache Bench,Apache附带的ab命令非常容易使用,可以直接在Web服务器本地发起测试请求。ab进行一切测试的本质都是基于HTTP的,所以可以说ab对于Web服务器软件的黑盒性能测试,获得的一切数据和计算结果,都是可以通过HTTP来解释的

    安装
    http://apache.mirrors.pair.com/httpd/

    用法:
    ab -c 并发数 -n 请求数 URL
    

    ab参数:

    -n  //在测试会话中所执行的请求个数。默认时,仅执行一个请求
    -c  //一次产生的请求个数。默认是一次一个。(如果请求的总数是1000,请求的总用户是10,那么平均每个用户执行100次请求)
    -t  //测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
    -p  //包含了需要POST的数据的文件.
    -T  //POST数据所使用的Content-type头信息
    -v  //设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 
    -V  //显示版本号并退出。
    -w  //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
    -i    //执行HEAD请求,而不是GET。
    -x attributes String to insert as table attributes//
    -y attributes String to insert as tr attributes//
    -z attributes String to insert as td or th attributes//
    -C attribute Add cookie, eg. ‘Apache=1234. (repeatable)//-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。
    -H attribute Add Arbitrary header line, eg. ‘Accept-Encoding: gzip’Inserted after all normal header lines. (repeatable)
    -A attribute Add Basic WWW Authentication, the attributesare a colon separated username and password.
    -P attribute Add Basic Proxy Authentication, the attributesare a colon separated username and password.//-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
    -X proxy:port Proxyserver and port number to use-V Print version number and exit-k Use HTTP KeepAlive feature
    -d Do not show percentiles served table.
    -S Do not show confidence estimators and warnings.
    -g filename Output collected data to gnuplot format file.
    -e filename Output CSV file with percentages served
    -h Display usage information (this message)//-attributes 设置 属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些’预想’的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。
    
    例如:
    ab -c 100 -n 100  http://test.com
    这个表示同时处理100个请求并运行100次index.php文件.    
    

    执行结果说明:

    Server Software: 测试服务器的Web服务器软件名字
    Server Hostname: 请求的域名
    Server Port: 测试的访问端口
    Document Path: 请求URL的绝问文件路径
    Document Length: 表示HTTP相应的正文的长度
    Concurrency Level: 标识并发的用户数(-c属性来设置)
    Time taken for tests: 执行完所有的请求所花费的时间Complete requests: 表示测试的总请求数
    Failed requests: 失败的请求
    Total transferred: 表示所有请求的响应数据的总和,包含头信息和正文长度.
    HTML transferred: 表示所有请求中响应数据的正文长度 (不包含头信息的长度)
    Requests per second: 这个就是我们要的吞吐率,表示每秒处理的请求数
    Time per request: 表示每个用户平均等待的时间. 等于 Time taken for tests / (Complete requests / Concurrency Level)
    Time per request:(mean, across all concurrent requests) 服务器平均请求处理的时间. 正是吞详细地址的倒数,为:Time per request / Concurrency Level 每个请求花费了多少秒.
    Transfer rate: 这些请求在单位内,从服务器获取的数据长度. 等于: Total transferred / Time taken for tests
    Percentage of the requests served within a certain time (ms): 这部分数据用于描述每个请求处理时间的分页情况,百分之五十不超过183毫秒,. 百分之九十不超过249毫秒,百分百不超过374毫秒.
    

    2、siege

    Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

    安装
    brew install siege
    
    用法:
    siege -c 并发数 -t 运行测试时间 URL
    
    如:
    siege -c 1000 -t 5s URL
    这里要注意的是-t后面的时间要带单位,s表示秒,如果不带,就是分钟,分钟的单位,还是挺长的,所以要注意一下。
    

    参数:

    -C,或–config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
    
    -v 运行时能看到详细的运行信息
    
    -c n,或–concurrent=n 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
    
    -i,–internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效
    
    -d n,–delay=n hit每个url之间的延迟,在0-n之间
    
    -r n,–reps=n 重复运行测试n次,不能与 -t同时存在
    
    -t n,–time=n 持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
    
    -l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
    
    -R SIEGERC,–rc=SIEGERC 指定用特定的siege 配置文件来运行,默认的为$HOME/.siegerc
    
    -f FILE, –file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt
    
    -u URL,–url=URL 测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定
    urls.txt文件:是很多行待测试URL的列表以换行符断开,格式为:
    [protocol://]host.domain.com[:port][path/to/file]
    用法举例:
    
    siege -c 300 -r 100 -f url.txt
    
    说明:-c是并发量,-r是重复次数。url.txt就是一个文本文件,每行都是一个url,它会从里面随机访问的。
    

    结果说明

    Transactions: 30000 hits //完成30000次处理
    
    Availability: 100.00 % //100.00 % 成功率
    
    Elapsed time: 68.59 secs //总共使用时间
    
    Data transferred: 817.76 MB //共数据传输 817.76 MB
    
    Response time: 0.04 secs //响应时间,显示网络连接的速度
    
    Transaction rate: 437.38 trans/sec //平均每秒完成 437.38 次处理
    
    Throughput: 11.92 MB/sec //平均每秒传送数据
    
    Concurrency: 17.53 //实际最高并发连接数
    
    Successful transactions: 30000 //成功处理次数
    
    Failed transactions: 0 //失败处理次数
    
    Longest transaction: 3.12 //每次传输所花最长时间
    
    Shortest transaction: 0.00 //每次传输所花最短时间
    

    示例:

    50个用户(每次并发量,注意不是每秒并发量) 重复100次 共产生 50 * 100 = 5000个请求
    /usr/local/siege/bin/siege -c 50 -r 100 https://www.abc.com/fcgi-bin/rs/
    
    50个用户 重复100次 发送GET参数
    /usr/local/siege/bin/siege -c 50 -r 100 https://www.abc.com/fcgi-bin/rs/?name=zhangsan
    
    50个用户 重复100次 发送POST参数 (注意引号)
    /usr/local/siege/bin/siege -c 50 -r 100 https://www.abc.com/fcgi-bin/rs/ POST name=zhangsan
    
    50个用户 重复100次 发送POST参数(从文件中读取)
    /usr/local/siege/bin/siege -c 50 -r 100 https://www.abc.com/fcgi-bin/rs/ POST < /root/ab_test/post.xml
    

    3、webbench

    Webbench是知名的网站压力测试工具,它是由Lionbridge公司 lionbridge 开发。
    Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。Webbench最多可以模拟3万个并发连接去测试网站的负载能力。

    安装:
    brew install webbench
    用法:
    webbench -c 并发数 -t 运行测试时间 URL
    如:
    webbench -c 5000 -t 120 http://test.com

    相关文章

      网友评论

          本文标题:PHP压力测试

          本文链接:https://www.haomeiwen.com/subject/qfjbmttx.html