高并发压力测试

一、Introduction

对于小微企业网站在自主推出某些活动时,可能导致网站产生高并发访问的情况。针对这种情况采用临时租用云服务器是有性价比的应对措施,比如,使用弹性云。这种租用服务有的按照访问流量计费。为了计算出大概的预算,需要根据推算的访问量做并发压力测试。

二、压力测试方法

一般,使用apache自带的ab.exe。ab.exe最高支持并发量不高于1000次/秒。对于提交表单或者读取cookie中数据的情景,原理都是提交一段html协议的字符串。获取到提交表单时的html协议数据然后让ab.exe发这个协议可以模拟提交表单数据。

php中的步骤:

抓取提交表单时提交的html协议。

在提交表单向下执行前,让程序die。

为了完成所有人的下单,在代码中注释掉清空购物车的代码。

打开浏览器的firebug。

在网页中执行提交表单,然后在firebug的Network信息栏看到抓取的html。

在这个html的头信息中,请求头中有cookie信息,form data中有表单数据。

创建一个用户存放表单数据的文件,内容为form  data中的数据,格式为get提交时的形式:key=value&key=value&key=value,比如:name=下单测试& province=北京& city=东城区。

将代码中的为了获取html而使用的die去掉,使用ab.exe,输入测试信息,

ab.exe  -c  20 -n  20  -C  "pgv_pvi=4387399680;PHPSESSID=37qknulookfad61iivpbqnb9i5"  -p  D:/002php/test1/eshop/post_data.txt  -T  "application/x-www-form-urlencoded"   http://www.php2.com/eshop/index.php/Home/Order/add.html

-c  并发量,访问pc数

-n  总的访问数

-C  请求中cookie信息,以""括住数据

-p  form数据,存放到文件中

-T  以post提交,以""括住数据

使用ab.exe测试返回的结果中,time  taken  foe tests记录了测试总耗时,根据总的请求量可以计算出服务器每秒可以处理的并发量,返回结果中的requests  per  second记录了秒并发处理量。

一般服务器中处理使用了框架搭建的网站的处理类似秒杀的并发处理能力不会太高,除了加服务器、租服务器使用弹性云的解决方案,也可以通过避开秒杀中真实下单连接数据处理的步骤,而是采用发号码的算法,凡是抢到号码的可以后续实际下单,从而疏解秒杀中真实下单的高并发。

你可能感兴趣的:(WEB)