性能压测注意点
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
通过下面两个图来讨论下并发压力增加,系统的变化情况:
图一中,
i) 通过对系统不断施加压力,在系统资源使用率在可接受范围内,TPS一路上升,到达b点,看性能指标能否到达预期值;
ii) 再施加压力,是系统资源使用率和各指标达到临界值, TPS有缓慢上升,到达c点,系统达到饱和状态;
iii) 在施加压力,系统资源长时间满负载运行,TPS及RT会下降,甚至崩溃。因为系统的CPU、内存、IO、网络等资源的占满,导致系统进程卡死,系统宕机;
要保证系统高性能、高可用,需系统在运行时,系统资源使用要在合理的范围内。这需要:
i) 对系统的基础设施有全面的监控&告警;
ii) 对系统的容量有评估和规划;
图二中,通过增加并发用户数,提升系统吞吐量
i) 当并发数达到一定数量时,系统响应时间RT会缓慢增大,结合系统资源使用情况。到达b点,系统在最佳运行区间,可获得最大并发数;
ii) 再增加并发数,响应时间RT会不断增大,结合系统资源达到临界值。 到达c点,系统最大负载点;
iii) 在增加并发数,响应时间RT会快速增大,结合系统资源使用率达到饱和。 到达d点,系统崩溃;
并发数的增大,会长时间占用系统的IO, 网络socket,内存等资源,并不能短时间释放。耗尽系统资源,导致系统崩溃,宕机。
用你熟悉的编程语言写一个 web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。
1. 目前主流的性能压测工具
Apache Bench:针对HTTP协议做性能压测的命令行开源工具
LoadRunner:是一款历史悠久的商业性能压测工具,通过模拟千万用户实施并发负载及实时性能检测的方式来确认和查找问题。由四部分组成:负载生成器、虚拟用户生成器、控制器、分析器
JMeter:Apache组织开发的基于Java的压力测试开源软件,可用于测试静态和动态资源。能对应用程序做功能/回归测试,支持对性能压测结果做图形分析。
云测试平台:各云平台提供压测Paas平台
2. 核心功能Java代码简单实现
版权声明: 本文为 InfoQ 作者【dony.zhang】的原创文章。
原文链接:【http://xie.infoq.cn/article/9b86419d55635ae896fa90fc6】。文章转载请联系作者。
评论