使用ab和wrk对腾讯CLS进行benchmark测试

使用ab和wrk对腾讯云日志服务CLS进行压力测试,以此为例对ab和wrk进行说明

ab

ab,全称是apache benchmark,是apache官方推出的工具。该工具是用来测试Apache服务器的性能的。查看安装的apache的服务器能提供的服务能力,每秒可以处理多少次请求。ab 执行时常用的选项如下表:

选项 作用
-c 并发数, 一次发送的总请求数,默认是一次发一个请求。
-k 打开keep-alive,在一个HTTP Session中请求多次。默认是关闭的。
-n 请求数, 整个benchmark测试过程中需要发送的请求次数。默认是一次,默认情况下得到的性能参数没有代表性。
-t 最大时间,benchmark测试最长时间,默认没有限制。
-u 上传文件,PUT操作时使用,需要设置-T选项
-T 设置上传文件的Content-Type
-p postfile,指定包含post数据的文件
-r 当接收到socket错误的时候ab不退出

安装

apt-get install apache2-utils

注意事项

  • 观察测试工具ab所在机器,以及被测试的前端机的CPU,内存,网络等都不超过最高限度的75%。
  • 测试中可能出现端口不足导致的测试失败

需要调整内核参数以支持端口重用,在Linux平台下需要在/etc/sysctl.conf文件中添加如下内容

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
kernel.printk = 7 4 1 7

然后运行sudo sysctl –p生效

使用示例

ab -c 50 -t 60 -n 300000 -k -T 'application/x-protobuf' -p /tmp/post_data.txt -H 'Host: ap-shanghai.cls.myqcloud.com' -H 'Authorization: q-sign-algorithm=sha1&q-ak=AKIDMfonbuXfqpcFicn3YrzwivMelfNwFWcW&q-sign-time=1517472219;1517493819&q-key-time=1517472219;1517493819&q-header-list=content-type;host&q-url-param-list=&q-signature=4a4ed6ddc8ba1dfea73d2bee62def9dce8b0ca3c' http://ap-shanghai.cls.myqcloud.com/log

/tmp/post_data.txt数据为google protocol buffer格式的数据

结果分析

This is ApacheBench, Version 2.3 <$Revision: 1796539 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, https://www.apache.org/

Benchmarking ap-shanghai.cls.myqcloud.com (be patient)
Completed 30000 requests
Completed 60000 requests
Completed 90000 requests
Completed 120000 requests
Completed 150000 requests
Completed 180000 requests
Completed 210000 requests
Finished 223877 requests


Server Software:        openresty
Server Hostname:        ap-shanghai.cls.myqcloud.com
Server Port:            80

Document Path:          /log
Document Length:        0 bytes

Concurrency Level:      50
Time taken for tests:   60.001 seconds
Complete requests:      223877
Failed requests:        0
Keep-Alive requests:    223027
Total transferred:      38726471 bytes
Total body sent:        108604595
HTML transferred:       0 bytes
Requests per second:    3731.24 [#/sec] (mean)
Time per request:       13.400 [ms] (mean)
Time per request:       0.268 [ms] (mean, across all concurrent requests)
Transfer rate:          630.31 [Kbytes/sec] received
                        1767.63 kb/s sent
                        2397.94 kb/s total

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0      34
Processing:     9   13   3.8     13     164
Waiting:        8   13   3.8     13     164
Total:          9   13   3.8     13     164

Percentage of the requests served within a certain time (ms)
  50%     13
  66%     14
  75%     14
  80%     14
  90%     15
  95%     17
  98%     22
  99%     26
 100%    164 (longest request)

从测试结果,我们可以看到

  • 在50个并发请求的情况下,请求60秒,平均每秒可以处理3731次(也就是说,客户端在这种压力下,看到的QPS为3731)
  • 平均每次请求处理的Latency为13.4ms
  • 由于开启了keep-alive,连接几乎不耗时间
  • 99%的请求都在26ms内完成,最长的请求是164ms

使用腾讯云主机测试结果如下

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, https://www.apache.org/

Benchmarking ap-shanghai.cls.myqcloud.com (be patient)

Completed 30000 requests
Completed 60000 requests
Completed 90000 requests
Completed 120000 requests
Completed 150000 requests
Completed 180000 requests
Completed 210000 requests
Completed 240000 requests
Completed 270000 requests
Completed 300000 requests
Finished 300000 requests


Server Software:        openresty
Server Hostname:        ap-shanghai.cls.myqcloud.com
Server Port:            80

Document Path:          /log
Document Length:        0 bytes

Concurrency Level:      50
Time taken for tests:   40.095 seconds
Complete requests:      300000
Failed requests:        0
Keep-Alive requests:    298850
Total transferred:      51894250 bytes
Total body sent:        145500000
HTML transferred:       0 bytes
Requests per second:    7482.21 [#/sec] (mean)
Time per request:       6.683 [ms] (mean)
Time per request:       0.134 [ms] (mean, across all concurrent requests)
Transfer rate:          1263.94 [Kbytes/sec] received
                        3543.82 kb/s sent
                        4807.77 kb/s total
                       
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       6
Processing:     4    7   2.9      6     157
Waiting:        4    7   2.9      6     157
Total:          4    7   2.9      6     157

Percentage of the requests served within a certain time (ms)
  50%      6
  66%      7
  75%      7
  80%      8
  90%      9
  95%     10
  98%     14
  99%     18
 100%    157 (longest request)

从结果我们可以看到,QPS是非腾讯云主机的2倍,为7482

wrk

wrk是一个用来做HTTP benchmark测试的工具。可以产生显著的压力。

安装

apt-get install libssl-dev
git clone https://github.com/wg/wrk.git
cd wrk
make
cp wrk /usr/sbin

使用示例

wrk -c 50 -d 60 -t 5 -s /tmp/wrk_post.lua http://ap-shanghai.cls.myqcloud.com

请求的内容在/tmp/wrk_post.lua中规定,有5个线程,开启的连接有50个,运行60秒

其中/tmp/wrk_post.lua中的内容是

request = function()
  mypath = "/tmp/post_data.txt";
  local file = io.open(mypath, "r");
  assert(file);
  local body = file:read("*a");      -- 读取所有内容
  file:close();
  wrk.body = body
  path = "/log"
  wrk.headers["Content-Type"] = "application/x-protobuf"
  wrk.headers["Host"] = "ap-shanghai.cls.myqcloud.com"
  wrk.headers["Authorization"] = "q-sign-algorithm=sha1&q-ak=AKIDMfonbuXfqpcFicn3YrzwivMelfNwFWcW&q-sign-time=1517472219;1517493819&q-key-time=1517472219;1517493819&q-header-list=content-type;host&q-url-param-list=&q-signature=4a4ed6ddc8ba1dfea73d2bee62def9dce8b0ca3c"
  return wrk.format("POST", path)
end

结果分析

Running 1m test @ http://ap-shanghai.cls.myqcloud.com
  5 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    15.91ms   25.52ms 880.85ms   98.05%
    Req/Sec   745.32    105.11   848.00     94.79%
  221561 requests in 1.00m, 36.55MB read
Requests/sec:   3688.17
Transfer/sec:    623.03KB

从测试结果,我们可以看到

  • 在5个并发请求的情况下,开启50个连接,请求60秒,平均每秒可以处理3688次(也就是说,客户端在这种压力下,看到的QPS为3688)
  • 平均每次请求处理的Latency为15.91ms

使用腾讯云主机测试结果如下

Running 1m test @ http://ap-shanghai.cls.myqcloud.com
  5 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     6.77ms    3.42ms  90.45ms   94.82%
    Req/Sec     1.53k   119.04     1.74k    79.27%
  457574 requests in 1.00m, 75.48MB read
Requests/sec:   7623.03
Transfer/sec:      1.26MB

从结果我们可以看到,QPS是非腾讯云主机的2倍,为7623

总结

以上就是用开源的benchmark工具来从客户端的角度来衡量所能获取的QPS以及Latency。但从客户端看到的性能会受到各种因素的影响,例如请求的方式,本机的资源(CPU,内存,网络),CLS的网络状况,CLS的负载等都会影响客户端看到的性能指标。需要根据实际情况来查看性能瓶颈是来自于CLS还是来自于本机。


参考:

  1. 使用ab和wrk对OSS进行benchmark测试

念念不忘,必有回响,小伙伴们帮我点个赞吧,非常感谢。

我是职场亮哥,YY高级软件工程师、四年工作经验,拒绝咸鱼争当龙头的斜杠程序员。

听我说,进步多,程序人生一把梭

如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个鼓励,将不胜感激。

职场亮哥文章列表:更多文章

本人所有文章、回答都与版权保护平台有合作,著作权归职场亮哥所有,未经授权,转载必究!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容