slow_cooker 是一个服务器长周期负载测试工具,与其他大压力测试工具不同的是,slow_cooker 可以在很长一段时间内用可预测的负载和并发级别来测试服务器。而且会定期报告 qps 和延迟。
go build; ./slow_cooker <url> 或 go run main.go <url>
go test ./...
标签 | 默认值 | 描述 |
---|---|---|
-qps |
1 | 发送到每个请求线程后端的 QPS |
-concurrency |
1 | 要运行指定的 QPS 级别的 goroutine 的数量,总 QPS 测量为qps * concurrency 。 |
-iterations |
0 | 实验的迭代次数。之后优雅退出iterations * interval (默认为 0,表示无限)。 |
-compress |
<unset> |
如果设置此项,则要求压缩响应。 |
-data |
<none> |
在请求中包含指定的正文数据。如果数据以“@“开头,则剩余值将被视为读取正文数据的文件路径,或者如果数据值为“@-”,则将从标准输入读取正文数据。 |
-hashSampleRate |
0.0 |
用于检查请求正文哈希的采样率。[0.0, 1.0] 范围内的区间 |
-hashValue |
<none> |
fnv-1a 哈希值用于检查请求正文 |
-header |
<none> |
为每个请求添加额外的标头。可以多次指定,格式为key: value . |
-host |
<none> |
覆盖每个请求上设置的默认主机 header 值。. |
-interval |
10s | 往标准输出报告信息的频率。 |
-latencyUnit |
ms | 延迟单位 [ms |
-method |
GET | 确定发出请求时使用哪个 HTTP 方法。 |
-metric-addr |
<none> |
为 Prometheus-/metrics 端点提供服务时使用的地址。如果未设置,则不会提供任何指标。格式为 host:port 或 :port。 |
-noLatencySummary |
<unset> |
如果设置此项,则最终不会打印延迟的柱状图 |
-noreuse |
<unset> |
默认自动重连,如果设置此项则不会自动重连 |
-reportLatenciesCSV |
<none> |
文件名写入 CSV 延迟值,CSV 格式为毫秒桶(每个桶中的请求数) |
-timeout |
10s | 请求超时 |
-totalRequests |
<none> |
发送请求后退出 |
-help |
<unset> |
打印所有可用的标志并退出 |
如果<url>
参数以@
开头,则参数将被视为文件路径,以读取要发送请求的 URL 列表(用换行符分隔开)。
如果值为@-
,则将从标准输入中读取 url 列表。
示例 url 文件内容:
http://localhost:4140/foo
http://localhost:4140/bar
http://localhost:4140/baz
从文件中读取 url 列表:
$ slow_cooker -qps 100 @urllist
标准输入读取 url :
$ url_generator | slow_cooker -qps 100 @-
列表文件中的 url 将按顺序处理。
$ ./slow_cooker -qps 100 -concurrency 10 http://slow_server
2016-05-16T20:45:05Z 0 7102/0/0 10000 71% 10s 0 [ 12 26 37 91 ] 91
2016-05-16T20:45:16Z 1 7120/0/0 10000 71% 10s 1 [ 11 27 37 53 ] 53
2016-05-16T20:45:26Z 2 7158/0/0 10000 71% 10s 0 [ 11 27 37 74 ] 74
2016-05-16T20:45:36Z 3 7169/0/0 10000 71% 10s 1 [ 11 27 36 52 ] 52
2016-05-16T20:45:46Z 4 7273/0/0 10000 72% 10s 0 [ 11 27 36 58 ] 58
2016-05-16T20:45:56Z 5 7087/0/0 10000 70% 10s 1 [ 11 28 37 61 ] 61
2016-05-16T20:46:07Z 6 7231/0/0 10000 72% 10s 0 [ 11 26 35 71 ] 71
2016-05-16T20:46:17Z 7 7257/0/0 10000 72% 10s 0 [ 11 27 36 57 ] 57
2016-05-16T20:46:27Z 8 7205/0/0 10000 72% 10s 0 [ 11 27 36 64 ] 64
2016-05-16T20:46:37Z 9 7256/0/0 10000 72% 10s 0 [ 11 27 36 62 ] 62
2016-05-16T20:46:47Z 10 7164/0/0 10000 71% 10s 0 [ 11 27 38 74 ] 74
2016-05-16T20:46:58Z 11 7232/0/0 10000 72% 10s 0 [ 11 26 35 63 ] 63
在这个例子中,我们看到服务器太慢而无法跟上我们请求的负载,这种缓慢是通过吞吐量百分比来表示的。
在输出中使用垂直对齐来帮助发现异常和发现减速。如果您正在运行很多个小时的测试,建议将报告间隔提高到 60 秒(60s
或1m
)。
$timestamp $good/$bad/$failed $trafficGoal $percentGoal $interval $min [$p50 $p95 $p99 $p999] $max $bhash
bad
表示 500 范围内的状态代码。failed
表示连接失败。
bhash
是正文内容的失败哈希数,大于 0 的值表示存在实际问题。
主要内容:1. 项目依赖文件配置,2. @Test(invocationCount =?),3. @Test(invocationCount = ? threadPoolSize = ?),4. 负载测试示例在本教程中,我们将演示如何使用属性和在网站上执行负载测试或压力测试。 使用的工具 : TestNG 6.8.7 Selenium 2.39.0 Maven 3 我们使用库自动化浏览器来访问网站。创建一个用于测试的Maven项目:TestngSelenium 。 1. 项目依赖文件配置 获取T
我的客户机正在使用EventHub的HTTPendpoint发布事件,这实际上意味着当客户机希望发布事件时,它会向一个特殊的URL发送HTTPS POST请求,例如: 我可以很容易地从本地机器上加载测试这个服务(例如,使用Apache JMeter),但不幸的是,本地机器的资源有限,所以我不能生成很大的负载来测试我的服务。 我说大负荷是什么意思? 如果没有,我如何加载测试我的基于EventHub的
使用 Apache Ant 和 Apache JMeter 频繁进行负载测试 负载测试通常在开发周期的后期执行,但是并不一定要这样。在 让开发自动化的这一期,自动化专家 Paul Duvall 将向您描述如何创建一个运行 JMeter 测试的预订集成构建,发现和修复开发周期中出现的问题。 您的软件系统可供多少用户同时访问?在不引起性能下降的前提下可以加载多少数据?您的系统有多大的吞吐量需求?间隔多
我们目前对应用程序的负载测试是使用jMeter完成的,到目前为止运行良好。我们有三个不同的线程组,可以通过命令行标志分别启用和配置。还可以从命令行配置线程数和目标吞吐量。 我正在寻找的是为每个线程组编程负载场景的可能性。通常jMeter启动所有线程,然后尝试达到其目标吞吐量速率。我想要实现的如下:我配置目标吞吐量速率为每秒500个请求,启动速率为20,增量为20,持续时间为5分钟。jMeter应该
问题内容: 我已经构建了一个对资源需求(即http访问次数)做出反应的应用程序。为了测试它,我想使用ApacheJMeter以编程方式生成http GET请求。不幸的是,我找不到在测试用例的预定义段期间生成不同数量的http GET的任何可能性。例如,测试应如下所示: 希望有可能,谢谢。 问题答案: 吞吐量整形计时器插件允许以不同的速率设置多个流量段 https://jmeter-plugins.
假设我需要编写一个gatling负载测试脚本,它需要调用两个api A1和A2。它首先需要调用A1,A1将返回一个JSON负载,它需要在JSON负载中提取一个字段,并在调用第二个API时使用该字段值。有人能告诉我怎么做吗?此脚本用于负载测试通过HTTP的服务器restful API。
嗨,由于我不知道负载测试,我在学习时有疑问。希望如果它是一个无效的也请让我帮助。 在jmeter中,我们可以简单地记录并正确地进行负载测试。如果是这样的话,如果我从我的客户端加载一些未知的应用程序,可能会导致服务器崩溃。然后,如果未知人员负载测试的服务器崩溃,他们该怎么办。 有没有什么具体的事情要做负载测试,或者只是我们可以在任何网站上做负载测试。请让我知道这件事,即使我的查询也不是有效的……提前
分布式负载测试 该教程描述如何在Kubernetes中进行分布式负载均衡测试,包括一个web应用、docker镜像和Kubernetes controllers/services。关于分布式负载测试的更多资料请查看Distributed Load Testing Using Kubernetes 。 准备 不需要GCE及其他组件,你只需要有一个kubernetes集群即可。 如果你还没有kuber