slow_cooker 长周期负载测试工具开源项目

我要开发同款
匿名用户2021年10月27日
74阅读
开发技术GO语言
所属分类Google Go、性能测试和优化、开发工具
授权协议Apache 2.0

作品详情

slow_cooker是一个服务器长周期负载测试工具,与其他大压力测试工具不同的是,slow_cooker可以在很长一段时间内用可预测的负载和并发级别来测试服务器。而且会定期报告qps和延迟。

运行

gobuild;./slow_cooker<url> 或 gorunmain.go<url>

测试

gotest./...

标签表标签默认值描述-qps1发送到每个请求线程后端的 QPS-concurrency1要运行指定的QPS级别的goroutine的数量,总QPS测量为qps*concurrency。-iterations0实验的迭代次数。之后优雅退出iterations*interval(默认为0,表示无限)。-compress<unset>如果设置此项,则要求压缩响应。-data<none>在请求中包含指定的正文数据。如果数据以“@“开头,则剩余值将被视为读取正文数据的文件路径,或者如果数据值为“@-”,则将从标准输入读取正文数据。-hashSampleRate0.0用于检查请求正文哈希的采样率。[0.0,1.0]范围内的区间-hashValue<none>fnv-1a哈希值用于检查请求正文-header<none>为每个请求添加额外的标头。可以多次指定,格式为key:value.-host<none>覆盖每个请求上设置的默认主机header值。.-interval10s往标准输出报告信息的频率。-latencyUnitms延迟单位[ms-methodGET确定发出请求时使用哪个HTTP方法。-metric-addr<none>为Prometheus-/metrics端点提供服务时使用的地址。如果未设置,则不会提供任何指标。格式为host:port或:port。-noLatencySummary<unset>如果设置此项,则最终不会打印延迟的柱状图-noreuse<unset>默认自动重连,如果设置此项则不会自动重连-reportLatenciesCSV<none>文件名写入CSV延迟值,CSV格式为毫秒桶(每个桶中的请求数)-timeout10s请求超时-totalRequests<none>发送请求后退出-help<unset>打印所有可用的标志并退出使用URL文件

如果<url>参数以@开头,则参数将被视为文件路径,以读取要发送请求的URL列表(用换行符分隔开)。

如果值为@-,则将从标准输入中读取url列表。

示例url文件内容:

https://localhost:4140/foohttps://localhost:4140/barhttps://localhost:4140/baz

从文件中读取url列表:

$slow_cooker-qps100@urllist

标准输入读取 url:

$url_generator|slow_cooker-qps100@-

列表文件中的url将按顺序处理。

示例用法$./slow_cooker-qps100-concurrency10https://slow_server2016-05-16T20:45:05Z07102/0/01000071%10s0[12263791]912016-05-16T20:45:16Z17120/0/01000071%10s1[11273753]532016-05-16T20:45:26Z27158/0/01000071%10s0[11273774]742016-05-16T20:45:36Z37169/0/01000071%10s1[11273652]522016-05-16T20:45:46Z47273/0/01000072%10s0[11273658]582016-05-16T20:45:56Z57087/0/01000070%10s1[11283761]612016-05-16T20:46:07Z67231/0/01000072%10s0[11263571]712016-05-16T20:46:17Z77257/0/01000072%10s0[11273657]572016-05-16T20:46:27Z87205/0/01000072%10s0[11273664]642016-05-16T20:46:37Z97256/0/01000072%10s0[11273662]622016-05-16T20:46:47Z107164/0/01000071%10s0[11273874]742016-05-16T20:46:58Z117232/0/01000072%10s0[11263563]63

在这个例子中,我们看到服务器太慢而无法跟上我们请求的负载,这种缓慢是通过吞吐量百分比来表示的。

日志格式

在输出中使用垂直对齐来帮助发现异常和发现减速。如果您正在运行很多个小时的测试,建议将报告间隔提高到60秒(60s或1m)。

$timestamp$good/$bad/$failed$trafficGoal$percentGoal$interval$min[$p50$p95$p99$p999]$max$bhashbad表示500范围内的状态代码。failed表示连接失败。

bhash是正文内容的失败哈希数,大于0的值表示存在实际问题。

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论