微信二维码

二维码 扫二维码马上关注
扫码咨询
使用ab和wrk工具对阿里云对象存储服务(OSS)进行基准测试

        随着越来越多的人开始使用阿里云对象存储服务(OSS), OSS性能问题变得越来越普遍。在我们的讨论中,性能指每秒查询(QPS)和每个处理请求的延迟。可以说,测试OSS的性能是一个相当广泛的主题。

        从用户的角度来看,OSS的性能与压力类型(同步或异步)、请求对象的大小和请求方法(读或写)有关。从OSS服务的角度来看,性能与服务器模型(磁盘、nic、内存和cpu)、服务器数量以及整个集群的网络和负载有关。

        在本文中,我们将讨论如何在单服务器环境中使用ab和wrk工具,以及向OSS端点发送请求的方法。此外,我们还将看到如何计算客户机端的请求QPS和延迟。让我们从理解工具开始,我们将使用这些工具来计算OSS的性能。

 

一、如何使用ab工具

        Apache Benchmark或ab是Apache官方推出的用于测试Apache服务器性能的工具。该工具查看已安装的Apache服务器提供的服务容量和每秒处理的请求数量。请参考以下链接下载和安装ab。

        httpd.apache.org/docs/2.4/install.html httpd.apache.org/docs/2.4/programs/ab.html

        由于OSS bucket需要访问权限,而ab不支持OSS签名,所以将bucket设置为公共读写权限,以便进行测试。

        假设我们对一个100kb对象模拟10个并发请求,一般参数如下:

        1、c:它表示一次请求的总数,默认为一次一个请求。
        2、k:它保持keep-alive enable keep-alive, HTTP允许多个请求,默认情况下是禁用的。

        3、n请求号:它是指整个基准测试中发出的请求数。默认情况下,它是一个实例。值得记住的一点是,默认模式下的性能参数不具有代表性。
        4、
t最长时间:为基准测试的最大时间。没有违约限制。

        5、u上传文件:它表示包含要放的数据的文件。记住还要设置-T。- t内容类型
        6、
T:它允许您设置要上载文件的内容类型。例如:应用程序/ x-www-form-urlencoded。默认值是text/plain。

        下面是一个例子,应该会使事情变得更明显。

 

二、测试OSS对小文件的高并发读写性能。

        要求:您需要一个具有公共读写权限的bucket。您可以将其命名为public。ab工具(开源)应该在Linux环境中运行。阿里云操作系统提供服务端点,例如os -cn-hangzhou-test.alibabacloudcs.com。准备一个5KB的文件,例如5KB的txt文件。

        测试过程:

        1、模拟对具有高并发性(50个线程)的小文件(5KB)的写入。运行

./ab -c 50 -t 300 -T ‘text/plain’ -u 5KB.txt

        模拟读取具有高并发性(50个线程)的小文件(5KB)。运行

./ab -c 50 -t

        300分钟。

        预期结果:

        测试通常以0个失败的请求和每秒的请求值执行,这反映了客户机每秒的处理能力。但是,这并不代表OSS服务器的处理能力。

        重要的笔记

        1、密切监视运行ab工具和前端服务器的服务器的CPU、内存和网络。确保它们不超过最大值的75%。

        2、测试可能会因为端口不足而失败。

        3、需要调整内核参数来支持端口重用。例如:在Linux 1上sudo vim /etc/sysctl.conf 2。添加以下内容net.ipv4。tcp_syncookies = 1 net.ipv4。tcp_tw_reuse = 1 net.ipv4。tcp_tw_recycle = 1 net.ipv4。tcp_fin_timeout = 30内核。printk = 7 4 1 7 3。运行sudo sysctl -p激活

        结果分析

$./ab -c 50 -t 60 -n 300000 -k http://oss-cn-hangzhou-test.aliyuncs.com/public/5KB.txt
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking oss-cn-hangzhou-test.aliyuncs.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
Finished 250137 requests

Server Software:        AliyunOSS
Server Hostname:        oss-cn-hangzhou-test.aliyuncs.com
Server Port:            80

Document Path:          /public/5KB.txt
Document Length:        5120 bytes

Concurrency Level:      50             Concurrency level
Time taken for tests:   60.000 seconds Test time
Complete requests:      250137         Total number of complete requests during the test
Failed requests:        0
Write errors:           0
Keep-Alive requests:    248492         Number of keep-alive requests
Total transferred:      1382504896 bytes
HTML transferred:       1280703929 bytes
Requests per second:    4168.94 [#/sec](mean)   Number of requests per second
Time per request:       11.993 [ms](mean)       Average latency for each request
Time per request:       0.240 [ms](mean, across all concurrent requests)
Transfer rate:          22501.67 [Kbytes/sec] received

Connection Times (ms)    Connection request time
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:     1   12   7.6     12      87
Waiting:        1   12   7.6     12      87
Total:          1   12   7.6     12      87

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     15
  75%     16
  80%     17
  90%     20
  95%     23
  98%     28
  99%     37
 100%     87 (longest request)

 

  •         从测试结果可以看出:

            1、对于50个并发请求运行60秒的情况,ab每秒可以处理4168次/请求(也就是说,在此压力级别下,客户机端显示的QPS为4168次)。
            2、
    它处理每个请求的平均延迟约为12ms。

            3、由于我们启用了keepi -alive功能,所以连接很快就完成了。
            4、
    ab在37ms内处理了99%的请求,最长的请求持续了87ms。

           
    三、如何使用wrk工具

            wrk工具用于HTTP基准测试。它可以用来产生显著的压力。请参考下面的链接下载并安装wrk

            https://github.com/wg/wrk

            使用:您可以结合使用wrk工具和Lua脚本来执行PUT操作。

            先决条件&gt:要使用wrk,您需要一个具有公共读写权限的bucket。您可以将其命名为public。wrk工具在Linux环境中运行。OSS提供服务端点,例如os -cn-hangzhou-test.alibabacloud.com。准备一个5KB的文件,例如5KB.txt。

        上传:在这里,wrk使用Lua脚本进行上传操作。Lua脚本的内容put。lua如下:

    counter = 0
    request = function()
       mypath = "5KB.txt";
       local file = io.open(mypath, "r");
       assert(file);
       local body = file:read("*a");      -- read all content
       file:close();
       wrk.method = "PUT"
       wrk.body = body
       path = "/public/test-" .. mypath .. "-" .. counter
       wrk.headers["X-Counter"] = counter
       counter = counter + 1
       return wrk.format(nil, path)
    end
    done = function(summary, latency, requests)
       io.write("------------------------------\n")
       for _, p in pairs({ 50, 60, 90, 95, 99, 99.999 }) do
          n = latency:percentile(p)
          io.write(string.format("%g%%, %d ms\n", p, n/1000.0))
       end
    end
Execute Commands
$./wrk -c 50 -d 60 -t 5 -s put.lua http://oss-cn-hangzhou-test.aliyuncs.com
Initiates a PUT request to the endpoint, for the content specified in put.lua on 5 threads with 50 connections enabled and set to run for 60 seconds.

        测试结果

Running input
-c 50 -d 60 -t 5 -s put.lua http://oss-cn-hangzhou-test.aliyuncs.com
Running 1m test @ http://oss-cn-hangzhou-test.aliyuncs.com, test input http://oss-cn-hangzhou-test.aliyuncs.com
  5 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    16.23ms    9.49ms 159.48ms   96.45%
    Req/Sec   635.38     98.38     0.91k    72.63%
  189072 requests in 1.00m, 48.73MB read
Requests/sec:   3151.10
Transfer/sec:    831.58KB
------------------------------
50%, 14 ms
60%, 15 ms
90%, 20 ms
95%, 23 ms
99%, 64 ms
99.999%, 159 ms

        结果分析

        从测试结果可以得出以下结论:使用5个并发请求,在启用50个连接之后,请求将运行60秒。wrk平均每秒可以处理3151个请求(也就是说,在这种压力下,客户机上显示的QPS是3151)。

wrk处理每个请求的平均延迟约为16ms。

        它在64毫秒内完成了99%,最长的请求持续时间为159毫秒。

        下载

        执行命令:

$./wrk -c 50 -d 60 -t 5 http://oss-cn-hangzhou-test.aliyuncs.com/public/5KB.txt
Initiate a GET request to the endpoint, with 5 threads and 50 connections enabled. The request is run for 60 seconds.
Note: The 5KB.txt should exist here.

        试验结果

Running input
-c 50 -d 60 -t 5 http://oss-cn-hangzhou-test.aliyuncs.com/public/5KB.txt
Running 1m test @ http://oss-cn-hangzhou-test.aliyuncs.com/public/5KB.txt, test input http://oss-cn-hangzhou-test.aliyuncs.com/public/5KB.txt
  5 threads and 50 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    12.72ms    5.14ms  62.68ms   80.14%
    Req/Sec   814.86    145.65     1.36k    69.43%
  241990 requests in 1.00m, 1.25GB read
Requests/sec:   4033.14
Transfer/sec:     21.26MB

 

        结果分析:测试结果显示,对于5个并发请求,当我们启用50个连接并运行请求60秒时,wrk平均每秒处理4033个请求(也就是说,在这种压力下,客户机上显示的QPS是4033)。

它处理的请求平均延迟约为12ms。

结论:本文中提到的结果显示,阿里云对象存储服务(OSS)在客户端所显示的QPS和延时是通过开源基准工具来测量的。然而,客户机端显示的性能受各种因素的影响,比如请求方法、本地资源(CPU、内存和网络)和OSS网络条件。阿里云推出了很多优惠活动,你可以在购买阿里云产品之前先领取阿里云代金券阿里云学生优惠券来获得更多优惠!

更多精彩内容,请关注元吉优惠券网:专注阿里云代金券阿里云服务器报价腾讯云代金券的免费领取!
更多精彩内容推荐:
云迁移不停机服务器:阿里云DTS 
云迁移工具常见问题-阿里云

阿里云服务器学生机 
阿里云服务器2折拼团购,拼着买更便宜 
阿里云服务器价格低至95元/年

 


在线客服
热线电话

扫一扫 微信加好友