- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 gatling 的新手,现在正在其网站 computer-database.gatling.io 上试用 Gatling。
一切正常,几天后我将在工作中对我的项目进行负载测试,但有一个问题,我的网站每秒需要 2000 个用户(正如我在其他资源上看到的那样,对于 gatling 来说似乎没什么大不了的)
我有这个简单的代码:我想在 300 秒内加载 250 个用户/管理员,现在是问题和问题(请帮我解决这个问题)当我启动这个脚本时:
package load
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.core.structure.ChainBuilder
import io.gatling.jdbc.Predef.jdbcFeeder
import scala.util.Random
import scala.concurrent.duration._
class TestOvo extends Simulation {
val httpProtocol = http
.baseURL("http://computer-database.gatling.io")
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en-US,en;q=0.8")
.userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
val headers_0 = Map("Upgrade-Insecure-Requests" -> "1")
val headers_10 = Map(
"Origin" -> "http://computer-database.gatling.io",
"Upgrade-Insecure-Requests" -> "1")
object Search {
val search = exec(http("request_0")
.get("/")
.headers(headers_0))
.pause(1)
.exec(http("request_1")
.get("/computers?f=macbook")
.headers(headers_0))
.pause(2)
.exec(http("request_2")
.get("/computers/89")
.headers(headers_0))
.pause(2)
.exec(http("request_3")
.get("/")
.headers(headers_0))
.pause(2)
}
object Browse {
val browse = exec(http("request_4")
.get("/computers?p=1")
.headers(headers_0))
.pause(1)
.exec(http("request_5")
.get("/computers?p=2")
.headers(headers_0))
.pause(1)
.exec(http("request_6")
.get("/computers?p=3")
.headers(headers_0))
.pause(2)
.exec(http("request_7")
.get("/computers?p=4")
.headers(headers_0)
.resources(http("request_8")
.get("/computers?p=5")
.headers(headers_0)))
.pause(1)
}
object Edit {
val edit = exec(http("request_9")
.get("/computers/new")
.headers(headers_0))
.pause(1)
.exec(http("request_10")
.post("/computers")
.headers(headers_10)
.formParam("name", "VoxooBox")
.formParam("introduced", "12.11.2017")
.formParam("discontinued", "")
.formParam("company", "16")
.check(status.is(400)))
.pause(1)
.exec(http("request_11")
.post("/computers")
.headers(headers_10)
.formParam("name", "VoxooBox")
.formParam("introduced", "2017.08.17")
.formParam("discontinued", "")
.formParam("company", "16")
.check(status.is(400)))
.pause(1)
.exec(http("request_12")
.post("/computers")
.headers(headers_10)
.formParam("name", "VoxooBox")
.formParam("introduced", "2017-08-17")
.formParam("discontinued", "")
.formParam("company", "16"))
}
val users = scenario("Users").exec(Search.search, Browse.browse);
val admins = scenario("Admins").exec(Search.search, Browse.browse, Edit.edit);
setUp(
users.inject(constantUsersPerSec(200) during (300 seconds)),
admins.inject(constantUsersPerSec(50) during (300 seconds))
).protocols(httpProtocol)
}
它最大程度地反射(reflect)了用户:
================================================================================
2017-10-17 14:47:20 25s elapsed
---- Requests ------------------------------------------------------------------
> Global (OK=15950 KO=0 )
> request_0 (OK=5046 KO=0 )
> request_0 Redirect 1 (OK=3829 KO=0 )
> request_1 (OK=2582 KO=0 )
> request_2 (OK=1589 KO=0 )
> request_3 (OK=1249 KO=0 )
> request_3 Redirect 1 (OK=897 KO=0 )
> request_4 (OK=423 KO=0 )
> request_5 (OK=224 KO=0 )
> request_6 (OK=88 KO=0 )
> request_7 (OK=17 KO=0 )
> request_8 (OK=6 KO=0 )
---- Users ---------------------------------------------------------------------
[------ ] 0%
waiting: 55156 / active: 4842 / done:2
---- Admins --------------------------------------------------------------------
[------ ] 0%
waiting: 13788 / active: 1212 / done:0
================================================================================
14:47:21.107 [WARN ] i.g.h.a.ResponseProcessor - Request 'request_5' failed: j.n.ConnectException: connection timed out: computer-database.gatling.io/35.158.229.206:80
然后出现这些错误:
[警告] i.g.h.a.ResponseProcessor - 请求“request_4”失败:j.n.ConnectException:连接超时:computer-database.gatling.io/35.158.229.206:8013:31:12.407 [警告] i.g.h.a.ResponseProcessor - 请求“request_4”失败:j.n.ConnectException:无法打开套接字。
在 gatling.conf 中我发现了这些行:
ahc {
#keepAlive = true # Allow pooling HTTP connections (keep-alive header automatically added)
#connectTimeout = 10000 # Timeout when establishing a connection
#handshakeTimeout = 10000 # Timeout when performing TLS hashshake
#pooledConnectionIdleTimeout = 60000 # Timeout when a connection stays unused in the pool
#readTimeout = 60000 # Timeout when a used connection stays idle
#maxRetry = 2 # Number of times that a request should be tried again
#requestTimeout = 60000 # Timeout of the requests
#acceptAnyCertificate = true # When set to true, doesn't validate SSL certificates
#httpClientCodecMaxInitialLineLength = 4096 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK")
#httpClientCodecMaxHeaderSize = 8192 # Maximum size, in bytes, of each request's headers
#httpClientCodecMaxChunkSize = 8192 # Maximum length of the content or each chunk
#webSocketMaxFrameSize = 10240000 # Maximum frame payload size
我想这可能与我的问题有关,或者我做错了什么?这是我的附带问题还是他们的网站无法接受?
以及为什么在我启动时
users.inject(constantUsersPerSec(200) during (300 seconds)),
admins.inject(constantUsersPerSec(50) during (300 seconds))
在终端中是
waiting: 55156 / active: 4842 / done:2
waiting: 13788 / active: 1212 / done:0
这么多?它是如何计算的?或者为什么,请向我解释一下。谢谢。
我的电脑:苹果系统版本:10.12.6 (处理器:2.6 GHz 英特尔酷睿 i5内存:8 GB 1600 MHz DDR3
最佳答案
constantUsersPerSec()
是关于您注入(inject)的用户数,而不是总用户数。
constantUsersPerSec(200) during (300 seconds)
,即 60k 用户。因此,这与 waiting: 55156/active: 4842/done:2
= 60k users 匹配。
我认为您真正想要的是使用以下策略注入(inject)用户:rampUsers(10) over (300 seconds)
关于scala - 加特林。连接异常 : connection timed out:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46789808/
我需要从 JSON 响应中获取可选数据以构建下一个请求。我使用 check(jsonPath("...rooms[0].id").exists.saveAs("...roomId")) 但是如果用户没
加特林世界的新手,但一位经验丰富的 Loadrunner 用户。我创建了一个示例模拟来运行两个场景,每个场景有 10 个用户,并且希望运行 10 分钟。以下是我的 setup 函数中的内容。但每次我运
我正在使用 Gatling 对我们的企业 API 进行性能测试。在使用“ postman ”进行测试时,我曾经通过以下标题: API key 授权承载 token 如果有人可以帮助我,那就太好了:如何
我正在对双站点 HA 应用程序进行负载测试,其每个站点都由代理访问。我需要通过加特林以循环方式平等地攻击两个代理。 为此,我正在寻找一种将代理的 IP 提供给代理 http conf 的方法,但似乎
编程 Gatling 性能测试 我需要检查从服务器返回的 HTML 是否包含预定义的字符串。它确实如此,并以错误中断测试。 我没有找到如何去做。它必须是这样的: val scn = scenari
我的测试运行良好,但现在我需要同时运行多个 session 。我尝试使用 headerRegex("Set-Cookie", "HOME_SESSID=(.*)").saveAs("homeSessi
我是 gatling 的新手,现在正在其网站 computer-database.gatling.io 上试用 Gatling。 一切正常,几天后我将在工作中对我的项目进行负载测试,但有一个问题,我的
我对使用 .exec 时 Gatling 的行为有疑问结合 .resources . documentation非常简要地描述了该行为: Allows to fetch resources in pa
我是一名优秀的程序员,十分优秀!