PHP-怎样正确做 Web 应用的压力测试?

发布于 2016-12-16 08:06:04 字数 61 浏览 1306 评论 4

大家一般如何做压力测试?比如怎样判断一个应用的承受能力,在到达何种程度时需要增加服务器? 请大家讲一下经验~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜无邪 2017-08-27 22:54:24

使用ab进行测试是一种单机多线程测试,是一种模拟测试,不可能和生产环境完全一样,只能做参考,找出吞吐量和响应时间的均衡。通常机器数/每台机器上的线程数/测试时间三个要素的不同组合,进行多次测试,分析测试结果数据找出最佳要素组合。建议使用jmeter编译自己的测试计划来测试

想挽留 2017-04-11 22:59:55

Web 应用的压力测试我觉得不仅仅是对某个页面做压力测试,而是需要对整个应用的所有相关页面做测试,要模拟用户的整个操作流程,如这样的过程:注册-》退出-》登录-》修改用户信息。这方面LoadRunner、QuickTest等测试工具都是个中高手,也可以模拟多并发。

偏爱自由 2017-02-24 06:33:43

使用Apache的ab做压力测试,ab可以直接在Web服务器本地发起测试请求,可以准确地测试服务器的处理时间,而不包括数据的网络传输时间以及用户PC本地的计算时间。
命令: ab -n1000 -c10 http://xxxx/test.html
n1000表示总请求数为1000,c10表示并发用户数为10,http://xxxx/test.html表示这些请求的目标URL。
通过ab输出Requests per second字段可以得知每秒请求数,一般统计每秒会有多少客户请求,然后根据之前测试的一台服务器的每秒请求数,响应增加服务器做集群。集群一般前段设置一个发向代理服务器,负责把客户请求重定向到后端的服务器,调度算法采用随机映射,算法如下:
<?php
$servers=array('auth1.bcd.com','auth2.bcd.com','auth3.bcd.com');
$index=substr(microtime(),5,3) % count($domains);
$server=$servers[$index];
header("Location: http://$server");?>
注意这里没有采用类似CPU的轮转调度法,因为注意需要保存最后一次转移的服务器序号,而且转移序号需要上锁,这样请求的并发性将大大降低。
做集群可以参考: Linux(centos)+Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb构建大流量服务器集群

也可以使用LoadRunner、Jmeter做压力测试。LoadRunner可以录制浏览器行为,往往注重从用户的角度做测试。

另外,可以使用Nmon安装在服务器本地做系统监控,可以查看内核状态、系统负载、虚拟内存、NFS等。也可以使用SNMP做远程监控。Cacti负责做数据统计和呈现。

晚风撩人 2017-01-05 04:46:02

Apache的ab是非常好用的测试工具,下面是十个免费的可以用来进行Web的负载/压力测试的工具,也可以试用一下:

Grinder — Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。

Pylot -Pylot是一款开源的测试web service性能和扩展性的工具,它运行HTTP 负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTP Requests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视test suites。

Web Capacity Analysis Tool (WCAT) — 这是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。您可以选择使用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或 NTLM 身份验证来访问站点的受限部分。(如果您的站点使用 cookie、表单或基于会话的身份验证,那您可以创建正确的 GET 或 POST 请求来对测试用户进行身份验证。)WCAT 还可管理您站点可能设置的任何 cookie,所以配置文件和会话信息将永久保存。

fwptt — fwptt 也是一个用来进行WEB应用负载测试的工具。它可以记录一般的请求,也可以记录Ajax请求。它可以用来测试 asp.net, jsp, php 或是其它的Web应用。

JCrawler — JCrawler是一个开源( CPL) 的WEB应用压力测试工具。通过其名字,你就可以知道这是一个用Java写的像网页爬虫一样的工具。只要你给其几个URL,它就可以开始爬过去了,它用一种特殊的方式来产生你WEB应用的负载。这个工具可以用来测试搜索引擎对你站点产生的负载。当然,其还有另一功能,你可以建立你的网站地图和再点击一下,将自动提交Sitemap给前5名的搜索引擎!

Apache JMeter — Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。

Siege -Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 Siege 支持基本的认证,cookies, HTTP 和 HTTPS 协议。

http_load — http_load 以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。可以可以测试HTTPS类的网站请求。

Web Polygraph — Web Polygraph这个软件也是一个用于测试WEB性能的工具,这个工具是很多公司的标准测试工具,包括微软在分析其软件性能的时候,也是使用这个工具做为基准工具的。很多招聘测试员的广告中都注明需要熟练掌握这个测试工具。

OpenSTA — OpenSTA是一个免费的、开放源代码的web性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试网站。其还能对录制的测试脚本进行,按指定的语法进行编辑。在录制完测试脚本后,可以对测试脚本进行编辑,以便进行特定的性能指标分析。其较为丰富的图形化测试结果大大提高了测试报告的可阅读性。OpenSTA 基于CORBA 的结构体系,它通过虚拟一个proxy,使用其专用的脚本控制语言,记录通过proxy 的一切HTTP/S traffic。通过分析OpenSTA的性能指标收集器收集的各项性能指标,以及HTTP 数据,对系统的性能进行分析。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文