slow_cooker 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
slow_cooker 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
slow_cooker 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache 2.0
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 罗奇奇
适用人群 未知
收录时间 2021-10-27

软件简介

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 列表。

示例 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 秒(60s1m)。

$timestamp $good/$bad/$failed $trafficGoal $percentGoal $interval $min [$p50 $p95 $p99 $p999] $max $bhash

bad表示 500 范围内的状态代码。failed表示连接失败。

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

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于DevOps专区
2016/03/30 09:28

log_slow_queries和slow_query_log区别

long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s slow_query_log : 指定是否开启慢查询日志 log_slow_queries : 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留) slow_query_log_file : 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log min_examined_row_limit:查询检查返回少于该参数指定行的SQL不被记录到慢查询日志 log_...

0
0
发表于数据库专区
2016/08/31 12:20

MySQL(Slow)

mysql profiling: show variables like '%profiling%'; set profiling = 1; show profiles; show profile for query 1; SHOW PROFILE [type [, type] ... ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]] type: ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS mysql slow:     set [session|global]  slow_qu...

0
0
发表了博客
2019/04/09 15:14

(转)SLOW READPROCESSOR;ERROR SLOW BLOCKRECEIVER错误日志分析

<div class="postbody"><div id="cnblogs_post_body" class="blogpost-body"><p>1.总结</p> <hr> <p>"Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你确认是因为集群负载高导致的还是因为某些节点的硬件问题。</p> <p>2.症状</p> <hr> <p>1.作业比以前运行的时间变长</p> <p>2.Job的日志中有以下WARN的信息</p> <pre class="prism-token token language-javas...

0
0
发表于DevOps专区
2016/07/14 15:31

logstash mysql slow

input { stdin {} } filter { if [type] == "mysql-slow" { mutate { rename => { "[beat][hostname]" => "hostname" } } grok { match => { "message" => "(?m)^#\s+Time:\s+\d{6}\s+\d+:\d+:\d+\n#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+(?:(?\S*) )?\[(?:%{IP:clientip})?\]\s+Id:\s+%{NUMBER🆔int}\n#\s+Schema:\s+(?:%{WORD:schema}?)\s+Last_er...

2
3
发表了博客
2014/11/17 19:18

Mysql slow query log

一、概念部分: 顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录。 慢查询日志采用的是简单的文本格式,可以通过各种文本编辑器查看其中的内容。其中记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。MySQL还提供了专门用来分析满查询...

0
9
发表于开发技能专区
2013/09/09 20:47

【原创】MySQL 之 slow log

慢查询有什么用? 它能记录下所有执行超过long_query_time时间的SQL语句,帮你找到执行慢的SQL,方便我们对这些SQL进行优化。 测试用 MySQL 版本。 Server version: 5.6.10-log Source distribution 未做任何慢日志设置时。 mysql> show variables like "%query%"; +------------------------------+--------------------------------------+ | Variable_name | Value ...

22
271
发表了博客
2011/03/18 21:12

nf_hook_slow函数

Hook被注册后,它就会在那里守株待兔,等待自动送上门的数据包,那么内核是如何调用到注册的Hook的呢?在分析NF_HOOK的时候说过,如果指定协议的指定钩子类型上注册了钩子函数数,会调用nf_hook_slow函数: CODE: /* Returns 1 if okfn() needs to be executed by the caller, * -EPERM for NF_DROP, 0 otherwise. */ int nf_hook_slow(int pf, unsigned int hook, struct sk_buff **pskb, struct net_device *indev, struct n...

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
1 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部