【Linux常用工具】03. Linux性能测试工具ab

ApacheBench是一款用于测试Apache服务器执行效率的工具,能够针对特定URL仿真连续或并发的请求,帮助评估服务器性能及调整配置。


在Apache服务器的套件中,有一个叫做 ab (ApacheBench) 的工具。

ApacheBench 主要是用来测试Apache服务器执行效率用的

ApacheBench 可以针对某个特定的 URL 仿真出连续的联机请求

同时还可以仿真出同时间点数个相同的联机请求,因此利用 ApacheBench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真出来的数据做为调整服务器设定或程序的依据。


参数说明


01 bixiaopeng@172-13-3-157 ~$ ab -h
02 Usage: ab [options] [http[s]://]hostname[:port]/path
03 Options are:
04 //-n 在测试会话中所执行的请求个数。默认时,仅执行一个请求
05    -n requests     Number of requests to perform
06 //-c 一次产生的请求个数。默认是一次一个。
07    -c concurrency  Number of multiple requests to make
08 //-t 测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
09    -t timelimit    Seconds to max. wait for responses
10  
11    -b windowsize   Size of TCP send/receive buffer, in bytes
12 //-p 包含了需要POST的数据的文件.
13    -p postfile     File containing data to POST. Remember also to set -T
14  
15    -u putfile      File containing data to PUT. Remember also to set -T
16 //-T POST数据所使用的Content-type头信息。
17    -T content-type Content-type header for POSTing, eg.
18                    'application/x-www-form-urlencoded'
19                    Default is 'text/plain'
20 //-v 设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
21    -v verbosity    How much troubleshooting info to print
22 //-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
23    -w              Print out results in HTML tables
24 //-i 执行HEAD请求,而不是GET。
25    -i              Use HEAD instead of GET
26    -x attributes   String to insert as table attributes
27    -y attributes   String to insert as tr attributes
28    -z attributes   String to insert as td or th attributes
29 //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。
30    -C attribute    Add cookie, eg. 'Apache=1234. (repeatable)
31    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
32                    Inserted after all normal header lines. (repeatable)
33    -A attribute    Add Basic WWW Authentication, the attributes
34                    are a colon separated username and password.
35 //-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
36    -P attribute    Add Basic Proxy Authentication, the attributes
37                    are a colon separated username and password.
38    -X proxy:port   Proxyserver and port number to use
39    -V              Print version number and exit
40    -k              Use HTTP KeepAlive feature
41    -d              Do not show percentiles served table.
42    -S              Do not show confidence estimators and warnings.
43    -g filename     Output collected data to gnuplot format file.
44    -e filename     Output CSV file with percentages served
45    -r              Don't exit on socket receive errors.
46    -h              Display usage information (this message)
47    -Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)
48    -f protocol     Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL)
49  
50 //-attributes 设置 属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。


举个栗子

参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:


01 bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ab -c 10 -n 1000 http://www.wirelessqa.com/?p=143
02 This is ApacheBench, Version 2.3 <$Revision: 655654 $>
03 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
04 Licensed to The Apache Software Foundation, http://www.apache.org/
05  
06  
07 Benchmarking www.wirelessqa.com (be patient)
08 Completed 100 requests
09 Completed 200 requests
10 Completed 300 requests
11 Completed 400 requests
12 Completed 500 requests
13 Completed 600 requests
14 Completed 700 requests
15 Completed 800 requests
16 Completed 900 requests
17 Completed 1000 requests
18 Finished 1000 requests
19  
20  
21  
22  
23 Server Software:        IIS
24 Server Hostname:        www.wirelessqa.com
25 Server Port:            80
26  
27  
28 Document Path:          /?p=143
29 Document Length:        40865 bytes
30  
31  
32 Concurrency Level:      10
33 Time taken for tests:   349.234 seconds
34 Complete requests:      1000
35 Failed requests:        674
36   (Connect: 0, Receive: 0, Length: 674, Exceptions: 0)
37 Write errors:           0
38 Total transferred:      41114189 bytes
39 HTML transferred:       40889965 bytes
40 Requests per second:    2.86 [#/sec] (mean)
41 Time per request:       3492.343 [ms] (mean)
42 Time per request:       349.234 [ms] (mean, across all concurrent requests)
43 Transfer rate:          114.97 [Kbytes/sec] received
44  
45  
46 Connection Times (ms)
47              min  mean[+/-sd] median   max
48 Connect:       35  161 401.6     59    3394
49 Processing:   571 3282 2723.1   2648   28374
50 Waiting:      309  654 767.3    538   21420
51 Total:        610 3443 2777.4   2826   28514
52  
53  
54 Percentage of the requests served within a certain time (ms)
55  50%   2826
56  66%   3636
57  75%   4364
58  80%   4799
59  90%   6239
60  95%   7744
61  98%  11263
62  99%  14251
63 100%  28514 (longest request)

结果:在同一时间有10个访问请求的情况下,完成1000次请求,失败674次,共花时间349.234秒,这个页面每秒平均处理2.86个请求



具体分析



01 //-c每次发送10个,-n 共发送1000次请求
02  
03 bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ab -c 10 -n 1000 http://www.wirelessqa.com/?p=143
04 This is ApacheBench, Version 2.3 <$Revision: 655654 $>
05 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
06 Licensed to The Apache Software Foundation, http://www.apache.org/
07  
08 Benchmarking www.wirelessqa.com (be patient)
09 Completed 100 requests
10 Completed 200 requests
11 Completed 300 requests
12 Completed 400 requests
13 Completed 500 requests
14 Completed 600 requests
15 Completed 700 requests
16 Completed 800 requests
17 Completed 900 requests
18 Completed 1000 requests
19 Finished 1000 requests
20  
21 //服务器软件IIS
22 Server Software:        IIS  
23 //服务器域名
24 Server Hostname:        www.wirelessqa.com
25 //服务器端口
26 Server Port:            80
27  
28 //文档路径
29 Document Path:          /?p=143
30 //文档的长度,不包括响应头
31 Document Length:        40865 bytes
32  
33 //并发数
34 Concurrency Level:      10
35 //整个测试持续时间
36 Time taken for tests:   349.234 seconds
37 //完成请求数量
38 Complete requests:      1000
39 //失败请求数量674
40 //Failed requests给出了失败原因统计:
41 //Connect:无法送出请求,目标主机连接失败,要求过程中连线被中断
42 //Length:回应的内容长度不一致,以content-Length头文件为判断依据
43 //Exception:发生了无法预期的错误
44 //备注1:这里分析一下为何失败了674次,从下面的统计数据我们可以看出,失败请求都落在Length上面,原因是被测网页是动态内容,当第一次发出HTTP request与后面发出的HTTP request所响应的html Length是不同大小的(即每次响应的Content-Length大小不一致),所以才会引起Length失败,这里Length是以第一次取得的Content-Length为主,以后得到的Content-Length跟第一次的不一致,就会报Length错误,所以这类Length大小不一的失败在测试动态面面的压力测试中是合理的,可以不用管它。
45 Failed requests:        674
46   (Connect: 0, Receive: 0, Length: 674, Exceptions: 0)
47 Write errors:           0
48  
49 //整个场景中的网络传输量
50 Total transferred:      41114189 bytes
51 //整个场景中的HTML内容传输量
52 //备注2:单个html文件的大小为40865,共发出1000次请求,40865000跟40889965差不多,所以1000次请求应该已经正确送出,没什么问题
53 HTML transferred:       40889965 bytes
54 //关键指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
55 Requests per second:    2.86 [#/sec] (mean)
56 //关键指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值
57 Time per request:       3492.343 [ms] (mean)
58 //每个请求实际运行时间的平均值,就是上面的时间 除以并发数
59 Time per request:       349.234 [ms] (mean, across all concurrent requests)
60  
61  
62 //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
63 Transfer rate:          114.97 [Kbytes/sec] received
64  
65 //网络上消耗的时间的分解
66 Connection Times (ms)
67              min  mean[+/-sd] median   max
68 Connect:       35  161 401.6     59    3394
69 Processing:   571 3282 2723.1   2648   28374
70 Waiting:      309  654 767.3    538   21420
71 Total:        610 3443 2777.4   2826   28514
72  
73 //整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于2826 毫秒,66% 的用户响应时间小于3636 毫秒,最大的响应时间小于28514毫秒
74 Percentage of the requests served within a certain time (ms)
75  50%   2826 // 就是有50%的请求都是在2826ms内完成的
76  66%   3636
77  75%   4364
78  80%   4799
79  90%   6239
80  95%   7744
81  98%  11263
82  99%  14251
83 100%  28514 (longest request)
【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

毕小烦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值