写点什么

性能优化 -1- 压测

用户头像
raox
关注
发布于: 2021 年 01 月 03 日
性能优化-1-压测

随着并发压力的增加,系统响应时间和吞吐量如何变化

常用性能测试指标:

  • 相应时间 RT , Response Time : 用户感受到的时间(客户端视角)。应用系统从发出请求开始到收到最后响应数据所需要的时间。直观的反映了系统的快慢

  • 并发数: 系统能够同时处理请求的数目,系统的负载特性。对于网站而言,并发数即系统并发用户数,指同时提交请求的用户数目。注意与在线用户数(当前登录系统的用户数)和系统用户数(可能访问系统的总用户数)的区别。一般来说,并发数不会太大,淘宝双十一高峰并发数可能是百万级别,可能同时在线数达到亿级,用户数可能超过十亿。

  • 吞吐量: 单位时间内系统处理的请求数量,系统的处理能力。对于网站,请求数/秒,页面数/秒,访问人数/天,处理的业务数/小时

  • QPS(TPS): Transactions Per Second 每秒事务数

  • 性能计数器: 描述服务器或操作系统性能的数据指标,包括 System Load、对象与线程数、内存使用、CPU 使用、磁盘与网络 I/O 等指标。


一个系统吞吐量通常由 QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降。

  1. 并发数不变:QPS 不断增加,QPS 超过最大吞吐量后,会有大量请求等待,平均响应时间急剧下降

  2. QPS 不变:增加并发数,会导致 CPU 并发线程过多,线上上下文切换频繁,内存消耗增加,从而使平均响应时间下降


参考:http://www.ha97.com/5095.html


用你熟悉的编程语言写一个 Web 性能压测工具

要求:输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。


实现环境:Python, Locust

示例代码:

# 执行步骤:# 1. 安装: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple locust#     或者下载whl from https://www.lfd.uci.edu/~gohlke/pythonlibs/#     windows前提安装VC++ build tool http://go.microsoft.com/fwlink/?LinkId=691126# 2. 运行: locust -f ./perf_test_baidu.py# 2.1       浏览器打开http://localhost:8089/。Web界面输入 User  = 10; HATCH_RATE = 10# 2.2       执行并查看结果from locust import HttpUser, task, between
class QuickstartUser(HttpUser): wait_time = between(0.5, 1) @task def hello_world(self): self.client.get("/")
def on_start(self): pass
复制代码


执行方法:10 并发 user,每次请求间隔小于 1S。总请求 1000 次


压力测试结果:平均响应时间 = 95% 响应时间 = 22ms


用户头像

raox

关注

还未添加个人签名 2019.02.11 加入

还未添加个人简介

评论

发布
暂无评论
性能优化-1-压测