您好,匿名用户
随意问技术百科期待您的加入

网站压力测试有什么方法论和工具推荐?

0 投票

对压力测试的概念很模糊,需要测试哪些性能指标和工具也不是很了解,一个答案也未必能讲清楚,能推荐一下这方面的书籍或者博客吗?

用户头像 提问 2012年 12月1日 @ Tristana 上等兵 (285 威望)
分享到:

1个回答

0 投票
 
最佳答案

测试方法论:

  • 先测网站静态资源,如果有前端服务器(Apache,Nginx等)先测试 static files,测试静态文件得到的这个数据是一个上限,网站程序的动态请求不会比这更快了。
  • 找近一点的地方测,减少由于网络 latency 导致不准确性。
  • 不要用同一台 server 测试,虽然 CPU 不太会是问题,但是 I/O 可能会有影响。
  • 总体可用性测试:测平均值和标准差
  • 一般压力测试:Server 每秒可以承受多少 requests

测试工具:

1. 总体可用性测试:测平均值和标准差

测试的数据除了看平均值,更要看标准差跟计算信赖区间。基本的统计学告诉我们,相差平均一个标准差可以涵盖 68% 的资料,相差两个标准差就可以涵盖 95% 的资料。因此我们可以算出 95% 的信赖区间,也就是 95% 发出的 requests 中,可以在几秒到几秒内回应。

httperf --server example.com \
        --port 80 \
        --uri /path \
        --num-conn 3000 \
        --num-call 1 \
        --timeout 5
  • --server 指定主机地址
  • --port 指定主机端口
  • --uri 指定测试的页面(相对路径)
  • --num-conn 指定总共发多少个请求
  • --num-call 指定每次连接发送的请求数(通常为1)
  • --timeout 指定请求超时时间

测试输出结果 Reply rate 部分可以看到有平均和标准差。要注意的是 httperf 是每5秒抓一次样本(sample),根据 httperf 的建议是希望至少有 30 个样本数才能得到准确的标准差,因此当样本(sample)数太少的时候,需要把 –num-conns 往上加。

2. 一般压力测试:Server 每秒可以承受多少 requests

在之前的基础上,再加上 --rate 跟 --hog 參數:

  • --rate 指定每秒执行多少个请求数
httperf --server example.com \
        --port 80 \
        --uri /path \
        --num-conn 3000 \
        --num-call 1 \
        --timeout 5
        --rate 300 \ 
        --hog

逐步把 --rate 往上调,直到 server 超过极限时,当有 requests 被 drop off 了,replies 就会减少并出现 Errors。

参考资料:

用户头像 回复 2012年 12月1日 @ Taurus 上等兵 (303 威望)
选中 2012年 12月1日 @Tristana
提一个问题:

相关问题

0 投票
1 回复 50 阅读
0 投票
1 回复 26 阅读
用户头像 提问 2012年 12月1日 @ Mordekaiser 上等兵 (232 威望)
0 投票
1 回复 32 阅读
0 投票
1 回复 41 阅读
0 投票
1 回复 29 阅读
用户头像 提问 2012年 12月1日 @ 卫宫士郎 上等兵 (173 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...