1.编写性能测试业务脚本,大致可以根据这个模板去编写,如果用到其他参数的话可以根据需求添加
from locust import HttpLocust,TaskSet,task
import random
hash_id = ['Eq1wzd','EbVNJ4','Ej8bnN','lDgRw0','E4e2gm',"EX8mdk"]
class ShortLinkBehavior(TaskSet):
@task(10)
def get_short_link(self):
id = hash_id[random.randint(0,5)]
api = '/'+ id
with self.client.get(api,name="/",catch_response=True,allow_redirects=False) as response:
if response.status_code != 302:
response.failure('Failed!')
else:
response.success()
class WebsiteUser(HttpLocust):
task_set = ShortLinkBehavior
min_wait = 100
max_wait = 1000
2.使用该脚本在主机上运行主节点
//host为压测服务的主机 主机ip为172.24.2.83
locust -f test_short_link.py --master --host=http://172.24.2.91:8081
[2020-07-03 12:26:45,214] LAPTOP-9B4P23JJ/INFO/locust.main: Starting web monitor at *:8089
[2020-07-03 12:26:45,229] LAPTOP-9B4P23JJ/INFO/locust.main: Starting Locust 0.11.0
3.使用该脚本在备用主机运行从节点1
//host为压测服务的从节点,机器ip为172.24.2.122
locust -f test_short_link.py --slave --master-host=172.24.2.83 --host=http://172.24.2.91:8081
[2020-07-03 11:53:39,711] LAPTOP-9B4P23JJ/INFO/locust.main: Starting Locust 0.11.0
[2020-07-03 11:53:53,872] LAPTOP-9B4P23JJ/INFO/locust.runners: Hatching and swarming 33 clients at the rate 1.666
4.使用该脚本在备用主机运行从节点2
//host为压测服务的从节点,机器ip为172.24.2.66
locust -f test_short_link.py --slave --master-host=172.24.2.83 --host=http://172.24.2.91:8081
[2020-07-03 11:53:39,711] LAPTOP-9B4P23JJ/INFO/locust.main: Starting Locust 0.11.0
[2020-07-03 11:53:53,872] LAPTOP-9B4P23JJ/INFO/locust.runners: Hatching and swarming 33 clients at the rate 1.666
5.运行后,可在主节点查看压测信息,进入到主节点的web可视化页面http://172.24.2.83:8090,可设置虚拟用户数,分布式设置的话,是基于设置数/从节点数=每台从节点虚拟用户数
6.性能测试指标
- TPS:在术语中解释了TPS是每秒事务数,操作事务时,需要靠虚拟用户实现,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1,如果事务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000了,如果某笔事务响应时间是1s,那么如果要达到1000TPS,至少需要1000个虚拟用户,可以说1个用户可以产生1000TPS,1000个用户也可以产生1000TPS,无非是看响应时间快慢。
- min:最小响应时间,指的是在压测时,最短的响应时间。
- max:最大响应时间,指的是在压测时,最长的响应时间。
- avg:平均响应时间,指的是在压测时,总请求数/总响应时间=平均响应时间
- median:中位数响应时间,指的是在压测时,所有的响应时间取中间数,一般这个数与平均响应时间相差不大的话,相对来说服务比较稳定。一般在性能测试时,会比较关注以上的几个指标
7.其他
- 在压测时,尽量将搭建被测服务的机器与生产环境的机器设备保持一致,运行脚本的机器尽量选择好一点的,网络不要选择公司内部网络
- 在虚拟用户选择时,先从低到高选择,比如先50,100,200类似这样选择,递推虚拟用户数后,注意观察TPS有没有明显的增加或下降,查看被测服务机器的CPU,内存等信息,注意看有没有GC问题
- 在性能测试时,内存泄漏问题,在程序运行的一段时间,虚拟用户数达到了预设值,内存会先升高后,持续一段时间的稳定,没有明显的增加或减少,如果当虚拟用户数达到了预设值,内存还继续上升的话,可能会有GC问题。