• 1. 敏捷Web性能测试介绍一些实用的Web性能测试工具主讲人:李锟
  • 2. 10/16/20182为何程序员需要学会做性能测试在上线之前对应用的性能表现心里有数 尽早暴露出应用中存在的性能问题 使用测试数据指导性能调优的方向 测试数据可作为容量规划的参考依据 可以提高应用的可靠性
  • 3. 10/16/20183性能测试的分类一负载测试(load test) 在正常容量情况下执行的性能测试 压力测试(stress test) 在超出正常容量情况下执行的性能测试
  • 4. 10/16/20184性能测试的分类二Web性能测试 主要针对Web应用,基于HTTP协议 数据库性能测试 主要针对关系数据库,基于数据库特定的协议 文件系统I/O性能测试 各种专用协议的性能测试 FTP SMTP LDAP
  • 5. 10/16/20185Web性能测试工具的选择标准稳定可靠,能够模拟很高的并发访问情况 测试的样本数据具有很高的准确性和可信度 能够给出两次样本数据在统计学上的差异 统计学是分析测试数据优劣的基础 做好性能测试需要学习一些统计学 只看平均值是无意义的 更重要的:方差、各百分比区间(例如50%样本落入的区间) 若无法给出统计学上的差异,再多的数据对测试者来说意义也不大
  • 6. 10/16/20186敏捷Web性能测试的思路从简单的工具入手,简单的工具能做的测试,就不用复杂的工具 简单的工具并不是无用的工具,善于使用同样也会很有帮助 简单的工具能够提供快速的反馈 复杂的工具学习曲线太高,投入产出不成比例 简单工具更容易集成进持续集成的自动化过程之中 可以使用多种简单的工具来做对照测试
  • 7. 10/16/20187常用的免费Web性能测试工具http_load ab httperf curl-loader JMeter
  • 8. 10/16/20188http_load的优缺点http_load的优点 最为简单易用 支持HTTPS http_load的缺点 只能够测试GET请求 不支持模拟多用户多session 不支持设置运行时变量
  • 9. 10/16/20189http_load使用样例GET请求 http_load -rate 5 -seconds 4 urls.txt http_load -parallel 5 -fetches 20 urls.txt 样本数据分析 其他重要参数 -timeout 连接超时时间 -sip sip_file 执行可用IP列表,随机选择
  • 10. 10/16/201810ab的优缺点ab的优点 简单易用 除了能够测试GET请求,还能够测试POST请求,甚至能够测试文件上传 ab的缺点 不支持模拟多用户多session 不支持设置运行时变量 不支持HTTPS
  • 11. 10/16/201811ab使用样例GET请求 ab -n 20 -c 5 http://www.baidu.com/index.html POST请求 普通POST请求 ab -n 20 -c 5 -p content.txt -T “application/x-www-form-urlencoded” http://www.test.com/books/123 文件上传 ab -n 20 -c 5 -p content.txt -T "multipart/form-data; boundary=AaB03x" http://www.test.com/books/123 如何创建POST请求使用的内容文件 略
  • 12. 10/16/201812ab使用样例样本数据分析 其他重要参数 -t 响应的最大等待时间 -H 添加任意的HTTP Header -k 使用HTTP KeepAlive功能
  • 13. 10/16/201813httperf的优缺点httperf的优点 简单易用 数据准确性高 能够给出样本数据在统计学上的差异 支持模拟多用户多session 能够测试GET、POST、PUT请求 支持HTTPS httperf的缺点 不支持设置运行时变量 不支持HTTP代理
  • 14. 10/16/201814httperf使用样例GET请求 无session请求 httperf --server www.baidu.com --uri /index.html --num-conn 20 --rate 5 多session请求 httperf --server www.baidu.com –wsesslog=10,2,session.txt --rate 5 POST请求 httperf --server www.baidu.com –wsesslog=10,2,session.txt --rate 5 --method POST --add-header="Content-type:application/x-www-form-urlencoded"
  • 15. 10/16/201815httperf使用样例session文件格式介绍 样本数据分析 其他重要参数 --num-calls 每个连接发送的请求数 --timeout 响应的最大等待时间 --print-reply 输出响应的header和body --print-request 输出请求的header和body
  • 16. 10/16/201816curl-loader的优缺点curl-loader的优点 简单易用 支持模拟多用户多session 支持每个客户端有独立的IP(IP伪装) 能够测试GET、POST、PUT请求 支持HTTPS 还可以做FTP性能测试 curl-loader的缺点 只能在Linux上使用
  • 17. 10/16/201817curl-loader使用样例curl-loader -f test.conf 配置文件格式介绍 样本数据分析
  • 18. 10/16/201818JMeter的优缺点JMeter的优点 能够对测试的做细致的调校,最大限度模拟真实的流量 支持模拟多用户多session 支持灵活设置运行时变量 能够测试GET、POST、PUT、DELETE等各种HTTP请求 能够给出样本数据在统计学上的差异 多种数据分析方式和视图 支持HTTPS 还可以做JDBC、FTP、SMTP、LDAP等性能测试 同时支持性能测试和功能测试 JMeter的缺点 有一定的学习曲线
  • 19. 10/16/201819JMeter使用样例略,下一次分享专门介绍
  • 20. 10/16/201820性能测试注意事项服务器端可以暂时关闭鉴权 如果觉得有必要,也可以打开鉴权,但是需要测试工具支持 测试时,客户端机器不要运行其他程序 确保最大的网络带宽 尽量不要通过无线网络 确保客户端机器不会首先达到瓶颈 可打开文件句柄数、网卡容量、CPU、内存等等 若很容易达到瓶颈,需要考虑使用多台客户端机器并发测试 使用工具监测服务器端是否达到瓶颈 熟悉并深入理解HTTP协议
  • 21. 10/16/201821性能调优注意事项之一确定何时开展性能调优 过早开展的缺点 需求可能发生变化 引入复杂的编程模型,严重降低开发效率 代码尚不稳定 开展性能调优的最佳时机 需求不可能再发生大的变化 代码已经稳定,通过了功能测试 代码已经做过了重构
  • 22. 10/16/201822性能调优注意事项之二性能调优和性能测试要针对真正的性能热点区域开展 80/20法则:集中优势兵力,重点突破 如何确定性能热点区域 Google Analytics的统计数据 HTTP服务器的访问日志 Web应用服务器的访问日志 数据库的慢速SQL日志 开发专用的日志分析工具
  • 23. 10/16/201823性能调优注意事项之三性能调优要有可靠的测试工具和测试数据作为保障 性能优化的步骤 通过分析系统访问日志,确定性能热点区域 优化前,针对要优化的热点区域做一次测试 优化后,针对同一区域再做一次测试 若测试数据有所提高,说明优化取得了进展 若测试数据没有提高,甚至恶化了,需要对优化做回滚 循环执行以上步骤 若没有可靠测试数据的保障,性能优化很容易迷失方向
  • 24. 10/16/201824各种工具的地址http://www.acme.com/software/http_load/ http://www.apachelounge.com/download/ http://code.google.com/p/httperf/ http://curl-loader.sourceforge.net/ http://jmeter.apache.org/
  • 25. 10/16/201825参考文档各种测试工具的官方文档 小布老师的curl-loader视频教程 The Linux HTTP Benchmarking HOWTO http://www.xenoclast.org/doc/benchmark/HTTP-benchmarking-HOWTO/ Programmers Need To Learn Statistics Or I Will Kill Them All http://www.zedshaw.com/essays/programmer_stats.html
  • 26. 10/16/201826Q & A