操做
|
响应时间
|
打开一个网站
|
几秒
|
数据库查询一条记录(有索引)
|
十几毫秒
|
机械磁盘一次寻址定位
|
4毫秒
|
从机械磁盘顺序读取1M数据
|
2毫秒
|
从SSD磁盘顺序读取1M数据
|
0.3毫秒
|
从远程分布式换成Redis读取一个数据
|
0.5毫秒
|
从内存读取1M数据
|
十几微秒
|
Java程序本地方法调用
|
几微秒
|
网络传输2Kb数据
|
1微秒
|
tar zxvf http_load-09Mar2016.tar.gz
cd http_load-09Mar2016
make
sudo make install
http_load -p 并发访问进程数 -f 访问总数 须要访问的URL文件 http_load -r 每秒访问频率 -s 访问时间 须要访问的URL文件 // 参数说明:一般参数pf一块儿使用,参数rs一块儿使用。
-parallel 简写 -p :并发的用户进程数。 -fetches 简写 -f : 总计的访问次数。 -rate 简写 -r : 每秒的访问频率。 -seconds 简写 -s :总计的访问时间。
使用:php
48 fetches, 6 max parallel, 253264 bytes, in 10.0031 seconds // 说明在上面的测试中运行了48个请求,最大的并发进程数是6,总计传输的数据是253264bytes,运行的时间是10.0031秒 5276.33 mean bytes/connection // 说明每次链接平均传输的数据量是5276.33bytes。253264/48=5276.33 4.7985 fetches/sec, 25318.5 bytes/sec // 说明每秒的响应请求为4.7985个,每秒传递的数据为25318.5 bytes msecs/connect: 251.601 mean, 1493.45 max, 26.176 min // 说明每次链接的平均响应时间是251.601 毫秒,最大的响应时间1493.45 毫秒,最小的响应时间26.176 毫秒 msecs/first-response: 232.251 mean, 796.783 max, 39.402 min // 说明每次链接的平均返回时间是232.251 毫秒,最大的响应时间796.783 毫秒,最小的响应时间39.402 毫秒 HTTP response codes: code 200 -- 48 // 说明HTTP返回码是200,一共48次。 主要参考fetches/sec、msecs/connect数值, 前者对应QPS,表示每秒的响应请求数,后者对应response time,表示每一个链接的响应时间。
1000 fetches, 5 max parallel, 2。607e+06 bytes, in 328.806 seconds 2607 mean bytes/connection 3.04131 fetches/sec, 7928.69 bytes/sec msecs/connect: 772.326 mean, 19478.3 max, 219.936 min msecs/first-response: 830.46 mean, 10006.4 max, 237.957 min HTTP response codes: code 200 — 1000 从上面结果看,目标网站仅仅可以承受每秒3次的访问,不够强壮。
2)apache ab数据库
ab是Apache自带的压力测试工具,能够用which ab查看ab命令所在的目录。apache
ab -c 并发数 -n 请求数 URL // 参数说明: -n 在测试会话中所执行的请求个数。默认时,仅执行一个请求 -c 一次产生的请求个数。默认是一次一个。 -t 测试所进行的最大秒数。其内部隐含值是-n 50000。它可使对服务器的测试限制在一个固定的总时间之内。默认时,没有时间限制。
使用:安全
执行ab -n 100 -c 100 http://127.0.0.1/test/test.php,含义为同时处理100个请求并运行100次test.php,模拟100个并发用户,对一个页面发送100个请求。服务器
Server Software: Apache/2.4.23 // 服务器名称,apache 版本2.4.23 Server Hostname: 127.0.0.1 // 服务器主机名 Server Port: 80 // 服务器端口 Document Path: /test/test.php // 请求的URL中的根绝对路径,经过该文件的后缀名,咱们通常能够了解该请求的类型 Document Length: 54 bytes // HTTP响应数据的正文长度 Concurrency Level: 100 // 并发用户数 Time taken for tests: 0.085 seconds // 整个测试持续的时间,全部这些请求被处理完成所花费的总时间 Complete requests: 100 // 完成的请求数量 Failed requests: 0 // 失败的请求数量 Total transferred: 25600 bytes // 全部请求的响应数据长度总和,包括每一个HTTP响应数据的头信息和正文数据的长度 HTML transferred: 5400 bytes // 全部请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。 Requests per second: 1177.59 [#/sec] (mean) // 吞吐率,计算公式:Complete requests/Time taken for tests。至关于每秒事务数,后面括号中的 mean 表示这是一个平均值。吞吐率越高,服务器性能越好。 Time per request: 84.919 [ms] (mean) // 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。至关于平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值。 Time per request: 0.849 [ms] (mean, across all concurrent requests) // 服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也能够这么统计:Time per request/Concurrency Level。 Transfer rate: 294.40 [Kbytes/sec] received //这些请求在单位时间内从服务器获取的数据长度,即平均每秒网络上的流量,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量,能够帮助排除是否存在网络流量过大致使响应时间延长的问题。 Connection Times (ms) min mean[+/-sd] median max Connect: 1 2 0.4 2 3 Processing: 6 44 23.4 46 81 Waiting: 6 44 23.5 46 81 Total: 8 46 23.1 47 82 // 网络上消耗的时间的分解 Percentage of the requests served within a certain time (ms) 50% 47 66% 60 75% 66 80% 72 90% 76 95% 80 98% 82 99% 82 100% 82 (longest request) // 这部分数据用于描述每一个请求处理时间的分布状况,好比以上测试,66%的请求处理时间都不超过60ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每一个请求的处理时间。
并发请求量稍微高一点(200,300以上)就会报apr_socket_recv: Connection reset by peer 的错。网络
siege -c 并发数 -t 运行测试时间 URL siege -c 并发量 -r 重复次数 -f URL // 参数说明:-r和-t通常不一样时使用 -c 200 指定并发数200 -r 5 指定测试的次数5 -t 5 持续测试5分钟,-t若是不带单位,默认是分钟,s表示秒。 -f urls.txt 指定url的文件 -i internet的简写,随机发送url -b 请求无需等待 delay=0
使用:并发
执行siege -c 10 -r 5 -f urllist.txt,含义为10个并发对urllist文件发送请求5次。运维
Transactions: 300 hits // 总共测试次数,完成300次处理 Availability: 100.00 % // 成功次数百分比,100.00 % 成功率 Elapsed time: 31.36 secs // 总共用时31.36秒 Data transferred: 0.43 MB // 共数据传输0.43 MB Response time: 0.90 secs // 响应用时0.90秒 Transaction rate: 9.57 trans/sec // 平均每秒完成 9.57 次处理 Throughput: 0.01 MB/sec // 吞吐率,平均每秒传送数据 Concurrency: 8.62 // 最高并发数 Successful transactions: 250 // 成功请求数 Failed transactions: 0 // 失败请求数 Longest transaction: 3.66 // 每次传输所花最长时间 Shortest transaction: 0.50 // 每次传输所花最短期