如何对服务器进行压力测试(服务器压力测试要多长时间)

如何对Tomcat服务进行压力测试

英文原文

如果你在测试一个由Tomcat servlet容器(或者Apache web服务器)组成的环境时,你很可能会碰到瓶颈,因为Tomcat servlet容器使用Apache JServ Protocol - AJP。所以,如果想要评估Tomcat引擎的性能的话,最合适的方式就是使用相同的AJP协议。

使用 Apache JMeter ,你可以通过采样器(sampler)模拟发送AJP请求并返回结果 -- 也就是AJP/1.3采样器。你也可以用这个JMeter采样器来压测WildFly,Jetty和GlassFish servlet等Web容器,它们都是用AJP协议。这篇文章将会讲解如何来进行测试。

AJP是一个致力于从web服务器路由请求到应用服务器的二进制通信协议。在web服务器和应用服务器之间通信,AJP协议比HTTP协议更加高效,因为它是使用了压缩的二进制协议。例如,对于一个请求方法(“POST”或者“GET”),AJP只需要一个字节来表示,并且每个请求头只需要两个字节。所以,需要发送的信息大大减少,也就是得每个请求的处理也更快。

请求的处理大致如下:

对于这样的应用架构,JMeter AJP/1.3 采样器可以通过在你的系统上建立AJP连接,然后发送AJP请求到应用服务器,从而进行压测达到查找应用瓶颈的目的。

目前有3个版本的AJP协议 -- 1.2(废弃的),1.3 和 1.4(实验版本)。JMeter的AJP/1.3采样器支持1.3版本的AJP协议。

现在,我们来演示如何使用它。

AJP/1.3 采样器可以将这里设置的HTTP请求转换成AJP请求。正如你所看到的,它的界面和HTTP采样器的十分相似。

AJP 采样器有一个限制 -- 当前版本的实现不支持在一个请求里上传多个文件。只有第一个文件会被上传。必须使用多个AJP 采样器来上传多个文件。

现在,让我们来看看AJP 采样器在JMeter脚本里是如何工作的。首先,我们先在本地机器上启动一个Tomcat实例,然后配置它来发送POST请求。 Tomcat 9 默认就带了一些servlet示例,可以用来测试AJP请求。

我们的测试场景是:

接下来,我们会使用 AJP 采样器 来产生同样的请求。

在前面的章节里,我们的servlet可以接受两个参数并在结果里返回它们的值。现在,我们使用AJP 采样器来发送带参数的AJP POST请求,通过JMeter执行,并在相应结果里拿到我们在请求里设置的参数。

设置完成后的采样器如下:

6.现在,我们可以运行结果,并在监听器里查看结果。

现在,可以看到我们的采样器已经顺利地把带有我们设定的参数的AJP请求发送到我们的服务器上。并且,可以看到之前设置的参数都列在“Paramater in this request”部分 -- 这意味着我们的服务已经收到我们的请求了。

恭喜!你现在知道怎么压测AJP协议以及Tomcat服务了。为了更加方便地去执行你的测试,你可以将脚本上传到 BlazeMeter 上,然后直接在云上运行。你能够很方便的进行扩展,协同合作,并且可以得到高级的报表。

游戏上线前服务器压力测试应该怎么做

对于游戏后台性能,评测标准不只单单是TPS(每秒处理多少个XX请求),因为当你的游戏服务器上线后,不存在一群玩家只发XX请求的压力场景。所以,游戏后台受到的现网请求压力永远是多场景混合的,在这样的压力下,后台能支撑多少人同时在线,才是一个游戏压测者需要得到的有价值的测试结论。

要得到可支撑的\"最大同时在线人数\",主要做好2件事:

1、设计你的类现网压力模型

在现网真实压力里,不论压力大小如何变化,现网环境如何变化,一个游戏类型和玩法设计定型后,永远有2个压力宏观数据保持不变:a. 各接口的压力比例不变, b.玩家平均每分钟操作频率不变。因此,压力测试目标就转变成了如何模拟符合ab数据的压力。

对于a,首先从同类型游戏或者本游戏内测阶段,日志插桩,收集各个接口的调用比例;然后,将接口比例转化为场景比例,如同时会有个2%完结登陆、15%玩家战斗、20%玩家拉取好友列表、10%玩家赌博(一个手游场景例子)。

对于b,同样在内测阶段收集玩家平均操作频率。

此时有了a和b,就可以构造出一分钟内玩家同时在线的真实压力模型了。

2、用压测工具构造出符合压力模型的压力

这个可以自己写,也可以使用现成的压测工具。现在市面上的压测工具很多,但很多都是专注于TPS这个参数,不符合游戏行业压测的关注点,同时在线人数。

如何对服务器进行压力测试

http_load是基于Linux平台的一种性能测工具。它是以并行复用的方式运行,仅适用于Web页面的性能测试,不适用于访问数据库,而且测试结果分析是有限的,平台依赖Linux 。http_load可以简单地通过txt文本文件中记录的参数来对HTTP服务器进行压力测试,那是如何对服务器进行压力测试的呢?下面我们就来介绍 Linux中如何安装使用http_load对服务器进行压力测试的教程。具体方法步骤如下:1、下载官方网站:acme/software/http_load/http_load-12mar2006.tar.gztar xzf http_load-12mar2006.tar.gz2、安装代码如下:cd http_load-12mar2006make执行完make,会在当前目录生成一个http_load二进制文件。3、使用方法代码如下:root@www:~/http_load-12mar2006# 。/http_load --helpusage: 。/http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file]-parallel N -rate N [-jitter]-fetches N -seconds Nurl_fileOne start specifier, either -parallel or -rate, is required.One end specifier, either -fetches or -seconds, is required.主要参数说明:-parallel 简写-p :含义是并发的用户进程数。-rate 简写-r :含义是每秒的访问频率-fetches 简写-f :含义是总计的访问次数-seconds简写-s :含义是总计的访问时间选择参数时,-parallel和-rate选其中一个,-fetches和-seconds选其中一个。4、示例:代码如下:http_load -parallel 50 -s 10 urls.txt这段命令行是同时使用50个进程,随机访问urls.txt中的网址列表,总共访问10秒。代码如下:http_load -rate 50 -f 5000 urls.txt每秒请求50次,总共请求5000次停止。测试网站每秒所能承受的平均访问量:代码如下:http_load -parallel 5-fetches 1000urls.txt这段命令行是同时使用5个进程,随机访问urls.txt中的网址列表,总共访问1000次。运行之后的结果:1000 fetches, 5 max parallel, 6e+06 bytes, in 58.1026 seconds6000 mean bytes/connection17.2109 fetches/sec, 103266 bytes/secmsecs/connect: 0.403263 mean, 68.603 max, 0.194 minmsecs/first-response: 284.133 mean, 5410.13 max, 55.735 minHTTP response codes:code 200 — 1000从上面的运行结果来看,目标网站仅仅能够承受每秒17次访问,不够强壮。

未经允许不得转载:便宜VPS网 » 如何对服务器进行压力测试(服务器压力测试要多长时间)