网页压力测试工具
Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响,在网站实际上线之前先对您所设计的网站进行如同真实环境下的测试,以找出系统潜在的问题,对系统进行进一步的调整、设置工作。
Microsoft Web Application Stress具有以下几个特性:
* 可以数种不同的方式建立测试指令:包含以手动、录制浏览器操作步骤、或直接录入IIS的记录文件、录入网站的内容及录入其它测试程序的指令等方式。
* 支持多种客户端接口:标准的网站应用程序C 的客户端,使用Active Server Page 客户端,或是使用Web Application Stress对象模型建立您自定的接口。.
* 支持多用户利用多种不同的认证方式仿真实际的情况,包含了DPA, NTLM 及 SSL等。
* 支持使用动态的cookie仿真定制网站实际运作场景及对话(session)的支持。
* 在客户端的计算机以NT 服务的方式执行仿真的工作,可在不中断测试的情况下将某些客户端的测试计算机删除。
* 透过集中式的Microsoft Web Application Stress 治理员,您可以使用任意数目的客户端计算机同时进行测式的工作。
* 具有Bandwidth throttling (带宽遏流)的功能以仿真用户使用调制解调器上线的效果。
* 内建的query-string 编辑器可帮助您建立name-value pair组合的模板,并可在不同的场景测试中重复使用。
* 可程序化的对象模式让您可以建立您自己的测试客户端。
* 汇总的测试报告及丰富的性能测试资料。
* 支持域名系统(DNS)让您可以测试整个群集(Cluster)的机器。
* 使用Page group的方式来控制文件的组及测试指令的执行程序。
* 可自定的header让您可以仿真各种不同种类的浏览器。
* 可自定的指令延迟让您以更接近真实环境的方式进行测试。
网站测试概述
为了正确使用WAS进行网站的压力测试,您需要对于网站测试的方法有一初步的了解。以下的讨论将包含一些基本的概念以供参考。
网站的测试可大略分成三个主要的类别:
* 网站性能测试 (Performance testing)
* 压力测试下的网站稳定性 (Stability or stress testing)
* 网站承受能力评估 (Capacity planning)
网站性能测试的第一件工作就是使用测试工具对网站加压以测量网站服务器每秒可以承受的请求(Request Per Second) 的最大值。第二件工作就是找出系统性能限制的原因所在,举例来说,CPU、内存、或是后端系统所造成的反应延迟等。
在许多状况下,网站服务器的CPU是主要的性能瓶颈。测试时您可以持续加压直到性能表现开始下降,再慢慢的降低压力的程度。此时您所测试出来的最大性能即为该网站所能达到的最高值。在实际测试时,您可以通过增加压力线程(thread),或是增加执行WAS测试程序的客户端来加压。
在网站服务器端,您可以使用性能监视工具如Performance Monitor来监视如 "System: % Total Processor Time" 及 "Web Service: Connection Attempts/sec" 或 "Active Server Pages: Requests Queued"等指针。假如CPU的资源指针已达到80%到85%,则CPU的处理能力最有可能就是整个系统的瓶颈所在。若是在压力测试的过程中CPU所被使用的比例不高而”Requests Queued”的指针一直居高不下,可能是程序正在调用服务器上的COM组件而这个组件无法有效的执行完所有的命令,因而造成了系统性能的降低。在这种情形下,服务器上的COM组件才是真正的瓶颈。
目前市场上最热门的定制网站应用程序也会对网站的性能表现有重大的影响。WAS包含了数种特性可有效的帮助您测试定制的网站应用程序。例如,您可以建立用户,让WAS可以设置并储存每一个用户的cookie。您也可以使用QueryString 编辑器帮助您建立并储存数个不同的name-value pair以便在每一次执行request时进行测试。
网站服务器如何做访问压力测试?
网站服务器的压力测试我觉得主要有一些几点。
1.协议这边基本上以http或者https为主了,如果使用其他协议需要分析其打解包的方法。
2.要产生一定的压力,压力源这边一定要有保证。一般都是用机器人来模拟压力,关于机器人的逻辑可以根据具体业务来开发。
3.需要观察在一定压力下,服务器的各项性能指标(cpu,内存,IO,网络流量)进行观察,比如内存是否有泄漏,cpu利用率过高的情况。
4.压力测试应该是一个持续性的过程,在这个过程中需要统计服务器的性能数据,包括tps,以及机器的负载情况等。据此可以分析服务器的瓶颈在何处,后续可以针对优化。
5.目前大部分的服务器都部署在Linux系统上,测试同学还需要掌握相关的Linux命令以便可以更好的测试。
如果你觉得前面的太麻烦,可以来WeTest服务器压力测试高并发,实时性能报表,专家级性能优化建议,目前我们正在做网站压测这一块,你要做的仅仅是填下被测的URL即可,压力源、数据统计这些琐碎的工作交给我们就行了。
你好,网站压力测试软件会攻击网站吗,为何说对网站也造成不了威胁。
网站压力测试只是读取数据,篡改不了网站内容,所以造不成威胁,但是有些软件被人家植入木马之类的,就有可能对网站有威胁了
被别人用压力测试软件攻击了我网站之后,出现502 bad gateway,页面直接打不开,需要怎么解决,求指点
502 Bad Gateway是一种报错提示,这一错误并不意味着上游服务器已关闭(无响应网关/代理),而是上游服务器和网关/代理不同意的协议交换数据。
第一种原因:目前lnmp一键安装包比较多的问题就是502 Bad Gateway,大部分情况下原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。解决办法:可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的。
第二种原因:在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway
第三种原因:在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。
第四种原因:php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300。
第五种原因:磁盘空间不足,如mysql日志占用大量空间。
第六种原因:查看php-cgi进程是否在运行。
另外的解决办法:
Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关。
php-fpm.conf有两个至关重要的参数,一个是max_children,另一个是request_terminate_timeout,但是这个值不是通用的,而是需要自己计算的。
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。
计算的方式如下:如果服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话可以直接将 request_terminate_timeout设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。如果做不到这一点,也就 是说PHP-CGI可能出现某个BUG,或者宽带不够充足或者其他的原因导致PHP-CGI假死那么就建议给 request_terminate_timeout赋一个值,这个值可以根据服务器的性能进行设定。一般来说性能越好可以设置越高,20分钟-30分 钟都可以。
而max_children这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。 设置max_children也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右。
按照官方的答案,排查了相关的可能,并结合了网友的答案,得出了下面的解决办法:
1、查看php fastcgi的进程数(max_children值)代码:netstat -anpo | grep “php-cgi” | wc -l
5(假如显示5)
2、查看当前进程,代码:top观察fastcgi进程数,假如使用的进程数等于或高于5个,说明需要增加(根据机器实际状况而定)
3、调整/usr/local/php/etc/php-fpm.conf 的相关设置
value name=”max_children”10/value
value name=”request_terminate_timeout”60s/value
max_children最多10个进程,按照每个进程20MB内存,最多200MB。
request_terminate_timeout执行的时间为60秒,也就是1分钟。
0条大神的评论