在线测压网站

网站压力测试就是测试网站能够承受多大的访问量,以及在大访问量的情况下网站的性能。这些指标会直接影响用户的体验,因此在网站上线前一般都要做压力测试。压力测试也是考察网站使用的相关web服务器和框架的一个重要手段。

 

因为和真实的环境不同,压力测试通过模拟得到的结果不会和实际的负载完全相同,但它仍是一个很好的基准比较。做压力测试时也会尽可能地模拟实际的情况。

网上大家推荐的较为常见的网站压力测试工具有abwebbenchhttp_loadsiegecurl-loadermulti-mechanizetcpcopy等。

这里的大部分测试工具采用事件驱动模型来创建模拟用户,比如ab使用 apr 包中的 apr_pollset_poll 函数,而其他的工具都使用 select 函数,只有webbench通过 fork 子进程来创建模拟用户,它能模拟的并发数更高。

我把大家的一些总结列在这里:

ab

Apache自带的压力测试工具,还有一个 独立版本 。主要用于测试网站的每秒处理请求数,多用于静态压力测试。基本用法是:

$ ab -n 1000 -c 50 http://192.168.1.101/
-n总请求数
-c并发连接数

输出的结果如下:

Server Software:        Apache/2.2.16
Server Hostname:        192.168.1.101
Server Port:            80

Document Path:          /                               请求文档路径
Document Length:        14643 bytes                     请求文档大小

Concurrency Level:      50                              并发数
Time taken for tests:   38.724 seconds                  总测试时间
Complete requests:      1000                            全部请求数
Failed requests:        14                              失败请求数
   (Connect: 0, Receive: 0, Length: 14, Exceptions: 0)
Write errors:           14
Total transferred:      14847500 bytes                  总数据传输量
HTML transferred:       14548500 bytes                  HTML数据传输量
Requests per second:    25.82 [#/sec] (mean)            平均每秒请求数
Time per request:       1936.210 [ms] (mean)            平均每次并发所有请求时间
Time per request:       38.724 [ms] (mean, across all concurrent requests)
                                                        平均每次请求时间
Transfer rate:          374.43 [Kbytes/sec] received    传输速率

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2  668 1905.0    135   12237            连接时间
Processing:     0 1244 1652.3    902   14963            处理时间
Waiting:        0 1222 1651.1    883   14955            等待时间
Total:        134 1912 2723.5   1126   15096

Percentage of the requests served within a certain time (ms)
  50%   1126
  66%   1321
  75%   1369
  80%   1408
  90%   1917
  95%  10122
  98%  13030
  99%  13884
 100%  15096 (longest request)

webbench

webbench可以在 这里 下载。它主要测试每秒请求数,同时支持静态、动态和SSL,单例最多可模拟3万并发,适合小型网站的压力测试。

基本用法是:

$ webbench -c 100 -t 60 http://192.168.1.101/
-c并发数
-t测试时间

测试结果如下:

Benchmarking: GET http://192.168.1.101/
100 clients, running 60 sec.

Speed=1321 pages/min, 329214 bytes/sec.
Requests: 1321 susceed, 0 failed.

http_load

http_load可以在 这里 下载。它可以以单一进程运行,还可以测试HTTPS类的网站。

$ http_load -p 100 -s 60 urls.txt

几个主要的参数是:

-p并发数
-s访问时间
-f总访问次数
-r每秒访问次数

http_load把要测试的URL放在文件里。

测试结果如下:

1586 fetches, 100 max parallel, 2.32238e+07 bytes, in 60 seconds
14643 mean bytes/connection
26.4333 fetches/sec, 387063 bytes/sec
msecs/connect: 4.47058 mean, 1109.64 max, 0.211 min
msecs/first-response: 3652.73 mean, 29979.5 max, 234.175 min
HTTP response codes:
  code 200 -- 1586

Siege

Siege的主站为 http://www.joedog.org/siege-home/ 。它可以根据配置对一个网站做多用户并发访问,并记录每个用户所有请求过程的时间,可重复进行。

Siege需要先生成一个配置文件.siegerc。它的测试URL也是写在一个文件中的,每行一个,从中随机访问。并且会生成一个log文件。

$ siege -c 100 -r 10 -f urls.txt
-c并发数
-r重复次数

在终端会输出:

Transactions:                   1000 hits       总次数
Availability:                 100.00 %          成功率
Elapsed time:                  15.77 secs       测试时间
Data transferred:               0.45 MB         总数据传输量
Response time:                  0.47 secs       响应时间
Transaction rate:              63.41 trans/sec  每秒处理次数
Throughput:                     0.03 MB/sec     每秒数据传输量
Concurrency:                   29.90            实际最高并发数
Successful transactions:        1000            成功次数
Failed transactions:               0            失败次数
Longest transaction:            8.95            处理的最长时间
Shortest transaction:           0.04            处理的最短时间

同时,siege.log文件中会记录本次测试的时间等信息。

curl-loader

curl-loader 的特点是它使用了libcurl和openssl的客户端协议栈(更为真实),还支持登录和验证行为。

multi-mechanize

multi-mechanize 是一个Python写的性能测试框架。它可以用Python库中的 urllib 、 httplib 来发起请求,也可以用libcurl来请求。可以和Mechanize集成,因此做单元测试很容易。另外,它还可以用matplotlib将测试结果生成比较直观的图表。

tcpcopy

前面的几种测试工具属于轻量级的,一般都是以单例来模拟多用户并发。 tcpcopy 基于底层应用请求复制,并且具有分布式压力测试的功能(本身有C/S架构),结果和实际数据较为接近,主要用于中大型的压力测试。基于TCP的包均可测试。

 http://www.yeolar.com/note/2012/11/24/web-bench-test/

参考网址

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
回答: 在进行websocket测压时,可以使用两种方式来建立长连接并断开连接。第一种方式是使用WebSocket Open Connection + WebSocket request-response Sampler + WebSocket Close的方式,也被称为夹心饼干型。这种方式是在每次请求之前建立连接,在请求完成后关闭连接。比如,在一个线程组中有8个websocket的请求接口,每个线程调用一个websocket请求接口,先建立连接,调用完成后释放连接。这种方式类似于http接口的方式。一般来说,websocket接口需要保持长连接。\[1\]\[2\] 另一种方式是使用WebSocket Open Connection + WebSocket request-response Sampler的方式,也被称为有头无尾型。这种方式是在每次请求之前建立连接,但不在请求完成后关闭连接。多个线程多次循环时,线程在当前循环且当前线程所有接口调用完成后才会释放连接。\[2\]\[3\] 所以,在websocket测压中,可以根据具体需求选择适合的方式来建立长连接并断开连接。 #### 引用[.reference_title] - *1* *2* *3* [jmeter的WebSocket接口测试长连接是在何时断开的呢?](https://blog.csdn.net/Theahe/article/details/109404226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值