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的值表示存在实际问题。
评论