我想写一个gatling负载测试模拟类。我有三个请求:请求1、请求2和请求3。我希望能够在5秒内完成300个用户的负载测试。我还需要测试总共运行20分钟。
现在,我需要同时运行这三个请求,但需要90%的吞吐量、5%的吞吐量和5%的吞吐量。例如:如果有100个请求,90个必须是请求1和请求2的5,以及请求3的5。
到目前为止,我的课程是:
package simulations;
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class LoadSimulation extends Simulation{
val httpConfig = http
.baseURL("http://url.com")
.acceptHeader("text/html,application/xhtml+xml,application/xml")
val update = scenario("Update").exec(Api.update)
val read= scenario("Read").exec(Api.read)
val age= scenario("Age").exec(Api.age)
setUp(
postToChannel.inject(rampUsers(300) over (5 seconds))
).protocols(httpConf)
.maxDuration(20 minutes)
}
object Api{
val channelFeeder = csv(test.csv).random
val update = feed(channelFeeder)
.exec(http("Update")
.get("/update?key=${key}&${url}")
val read= feed(channelFeeder)
.exec(http("Read")
.get("/app/${id}/data/1/1.json?key=${key}")
val age= feed(channelFeeder)
.exec(http("Age")
.get(/app/${id}/data/1/age?key=${key})
}
我不确定如何将这三个api放在一个场景中并分别使用update(90)、read(5)和age(5)吞吐量运行它们。
这方面的任何线索都会很有帮助。
谢啦
我觉得你只有一根线。。三个连续的步骤将如何分离。。一个糟糕的方法是维护一个全局变量,并在所有线程之间共享它。。现在你可以有短路逻辑,让90请求转到步骤1,依此类推。。然而,从性能测试的角度来看,你应该运行三种不同的模拟,并为它们提供你想要的负载,而不是同时进行。。
使用Maven进行负载测试需要创建一个名为“pom”(项目对象模型)的文件。在pom的最初阶段。xml文件,则必须将要使用的依赖项定义为:
<dependencies>
<dependency>
...
<scope>test</scope>
</dependency>
</dependencies>
除了声明其他用于协助文件执行的插件外:
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>X.Y.Z</version>
</plugin>
您可以像上面一样定义多个插件段,只要您需要,就可以证明测试所需的使用。
现在有了这个假设,(我假设)您将使用Jenkins来使用Maven和Gatling插件。这是创建pom.xml文件的Gatling留档:链接
正如user666所提到的,您可以通过在pom文件期间将流程拆分为包含或排除,从而实现流程的“Maven ize”:
<configuration>
<!-- ... -->
<runMultipleSimulations>true</runMultipleSimulations>
<includes>
<param>my.package.MySimu1</param>
<param>my.package.MySimu2</param>
</includes>
<excludes>
<param>my.package.MySimuNotToRun</param>
</excludes>
</configuration>
编辑:我想我是误解了!我相信你所寻找的是各种各样的场景:
setUp(scenario1.inject(rampUsers(300)over (5)). protocols(...),
scenario2.inject(rampUsers(95) over (ramp seconds))
.protocols(...)
你可以在这里查看更多:https://gatling.io/docs/current/general/simulation_setup/
主要内容:创建JMeter测试计划,添加采样器,添加监听器,保存并执行测试计划,验证输出,添加吞吐量控制器,验证输出在本节中,我们将学习如何使用吞吐量控制器在JMeter中创建分布式负载测试计划。 出于测试目的,我们将在我们网站 www.yiibai.com 的URL下的某些网页上创建分布式负载。这些网页包括: 主页: www.yiibai.com 第1页(Java): www.yiibai.com/cplusplus/ 第2页(C语言): www.yiibai.com/cprogramming
我目前在AWS中使用Gatling加载测试我的服务。我使用HTTP做了几次负载测试,我的服务工作得很好。没有TLS握手错误。当我们移动到HTTPS时,负载测试结果显示TLS握手超时异常到处都是,最后因为未处理的请求排队而抛出OOM。 其他信息: Gatling场景如下:发送三个请求,然后使用头发送一个请求。我想模拟发送三个保持活动状态的请求,并在最后关闭它 我的服务由Kubernetes管理 我所
我如何负载测试一个同时有300个用户使用jmeter的登录页面(而不是一个又一个用户。同时有300个用户登录)?线程组的设置应该是什么?
假设我需要编写一个gatling负载测试脚本,它需要调用两个api A1和A2。它首先需要调用A1,A1将返回一个JSON负载,它需要在JSON负载中提取一个字段,并在调用第二个API时使用该字段值。有人能告诉我怎么做吗?此脚本用于负载测试通过HTTP的服务器restful API。
我们有一个Kafka集群,由3个节点组成,每个节点有32GB内存和6个内核2.5 CPU。 我们写了一个 kafka 制作人,它接收来自 Twitter 的推文,然后分批发送给 Kafka,每批 5000 条推文。 在生产者中,我们使用
嗨,我是JMeter的新手,我知道如何使用JMeter执行负载测试。我试图弄清楚压力测试或容量测试是如何通过JMeter执行的。是不是通过逐渐增加JMeter中的线程数,我们可以确定何时出现性能问题,并获得阈值,在阈值以上运行测试。那它会做压力测试吗? 在如何执行压力测试和能力测试与Jeter工具混淆。