1. 测试目的
本文主要用于记录测试过程,总结此服务器的测试结果。对此服务器进行压力测试,为后续的该进做好准备。
2. 项目背景
- 在学习过网络知识的前提下,为了加深对网络中数据传输的理解,为了更加清楚的认识我们在浏览器输入URL的工作过程,做了此项目。
- 在服务器的基础上,加入了一些个人的东西,在网页上注册个人信息以后,可以添加好友信息,然后服务器会定时向好友推送天气信息。
3. 测试概要
1.测试项目
这次测试主要是针对服务器能承受的压力及服务器的性能,对于服务器能承受的压力来讲,我们采用http_load工具。
2. http_load工具简介
http_load工具是以并行复用的方式运行,用以测试web服务器的吞吐量与负载。它可以以一个单一的进程运行,不会把客户机搞死。
3. http_load工具的安装和用法
安装
(1)首先要下载http_load工具,下载地址:
http_load-12mar2006.tar.gz
(2)接下来利用命令安装
#tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install
用法
http_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件
参数说明
参数 | 功能 |
---|---|
-parallel -p | 并发的用户进程数 |
-fetch -f | 总计的访问次数 |
-rate -r | 每秒的访问频率 |
-second -s | 总计的访问时间 |
备选的URL文件 | 最好超过50-100个测试效果最好 |
4. 测试开始
(1)启动服务器
(2)查看IP地址和端口号
(3)编写URL文件
(4)输入命令
[root@localhost http_load-12mar2006]# http_load -p 30 -s 60 urllist.txt
(5)测试结果展示
多线程服务器
epoll服务器
6. 测试结果解释
多线程服务器
- 90 fetches, 30 max parallel, 11780 bytes, in 60.0014 seconds
说明在上面的测试中运行了90个请求,最大的并发进程数是30,总计传输的数据为11780个字节,运行时间是60.0014秒。- 130.889 mean bytes/connection
表明每一个连接平均传输的数据量。- 1.49996
fetches/sec
, 196.329 bytes/sec
说明每秒响应1.49996个请求,
每秒传输196.329个字节msecs/connect
: 767.287 mean, 30999.3 max, 0.037 min
说明每个连接的平均响应时间为767.287msecs;
最大响应时间为30999.3msecs;
最小响应时间为0.037msecs。- msecs/first-response: 2996.1 mean, 51509.9 max, 0.759 min
- 3 bad byte counts
- HTTP response codes:
code 200 – 20
code 404 – 60
说明打开响应页面的类型,如果403的类型较多,注意是否系统遇到了瓶颈。
epoll服务器
- 201 fetches, 30 max parallel, 10602 bytes, in 60.0031 seconds
说明响应了201个请求,最大并发进程数为30,传输数据10602个字节,总计时间60.0031秒。- 52.7463 mean bytes/connection
每一个连接平均传输的数据量为52.7463字节。- 3.34983
fetches/sec
, 176.691 bytes/sec
说明每秒响应3.34983个请求,
每秒传输176.691个字节。msecs/connect
: 464.079 mean, 30999.4 max, 0.03 min
说明每个连接的平均响应时间为464.079msecs;
最大响应时间为30999.4msecs,最小响应时间为0.03msecs。- msecs/first-response: 1281.06 mean, 51510 max, 2.185 min
- HTTP response codes:
code 200 – 18
code 404 – 172
注:在这其中最重要的两个指标为fetches/sec
和msecs/connect
;即可以表示服务器每秒可以响应的查询次数。
7. 结果分析
- 就多线程和epoll服务器的对比
通过对比各项指标可以看出,epoll服务器的速度较快,效率高,性能较好。 - 对于服务器每秒可以响应的请求次数来说,是可以接受的,属于正常范畴。
- 对于服务器每个请求的响应时间来说,是可以接受的,属于正常范畴。
观点一:官方评价:来自《软件测试技术大全》一书
响应时间在4秒以内,大部分用户可以接受;4~9秒以内,30%的用户选择离开;
8~9秒,则有60%的用户选择离开;
超过10秒,则90%以上的用户选择离开。
观点二:在2秒之内给客户响应被用户认为是“非常有吸引力”的用户体验。在5秒之内给客户响应被用户认为是“比较不错”的用户体验。
在10秒之内给客户响应被用户认为是“糟糕”的用户体验。
如果超过10秒还没有得到响应,那么大多数用户会认为这次请求是失败的。
webbench工具
webbench工具也是一款检测服务器性能的工具,我们可以利用这个工具检测我们的服务器最多可以有多少人在线。
[jinyuyu@localhost webbench-1.5]$ webbench -c 100 -t 80 http://192.168.163.129:8888/
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.163.129:8888/
100 clients, running 80 sec.
Speed=22524845 pages/min, 0 bytes/sec.
Requests: 100 susceed, 0 failed.
[jinyuyu@localhost webbench-1.5]$ webbench -c 500 -t 150 http://192.168.163.129:888
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.163.129:8888/
500 clients, running 150 sec.
Speed=22524845 pages/min, 0 bytes/sec.
Requests: 400 susceed, 20 failed.
我们注意到在服务器并发500个client时,会有失败情况产生,说明超过服务器的负载,所以我们的服务器最多允许500人同时访问。