ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

locust的

2020-08-18 16:31:45  阅读:214  来源: 互联网

标签:10 pyecharts -- locust step time opts


Running Locust in Step Load Mode
If you want to monitor your service performance with different user load and probe the max tps that can be achieved, you can run Locust with Step Load enabled with --step-load:

如果你想分阶段递增并发用户数压测,找到系统最大的QPS,你可以用--step-load --step-users XX --step-time XX命令,不用再手动去增加用户数和压测时间。

譬如:

locust -f D:\api_locust\fm_api\locust_api\XXX.py  --master  --master-bind-port 9800 --headless -u 800 -r 50 --expect-worker 10 -t 50m -s 10  --step-load --step-users 200 --step-time 10m --csv D:\locustlog\ 

总共发起800并发请求,每秒启动50个用户,当启动到200用户数时,持续运行10分钟,运行步骤大致如下:

(1)4s启动到200

(2)200用户数:10分钟

(3)4s启动到400

(4)400用户数:10分钟

(5)4s启动到600

(6)600用户数:10分钟

(7)4s启动到800

(8)800用户数:10分钟

(9)800用户数:50-40=10分钟(小于10分钟)

压测结果如图:

 

可以得出系统qps最大也就550左右,后边随着并发数提升没有提升,唯一提升是平均响应时间。

通过 --step-load --step-users这样的命令就不用再折腾弄命令了。

关于压测结果图的生成,也很简单的,上面的压测命令会把压测的历史记录写到csv文件里,

读取csv文件再生成报表即可:

python用到的模块pyecharts

pyecharts文档地址:http://pyecharts.org/#/zh-cn/intro

贴个代码示例:

 1 # -*- coding = utf-8 -*-
 2 # ------------------------------
 3 # @time: 2020/8/15 16:05
 4 # @Author: drew_gg
 5 # @File: deal_csv.py
 6 # @Software: api_locust
 7 # ------------------------------
 8 
 9 import time
10 import csv
11 from pyecharts.charts import Line
12 from pyecharts import options as opts
13 from pyecharts.globals import ThemeType
14 
15 """
16 # pyecharts使用文档
17 # http://pyecharts.org/#/zh-cn/intro
18 """
19 excel_path = "D:\\_stats_history.csv"
20 
21 tm = []
22 uc = []
23 qps = []
24 fps = []
25 avg_time = []
26 with open(excel_path, 'r') as f:
27     cv = csv.reader(f)
28     for x, i in enumerate(list(cv)):
29         if x != 0:
30             tm.append(time.strftime('%H:%M:%S', time.localtime(int(i[0]))))
31             uc.append(i[1])
32             qps.append(i[4])
33             fps.append(i[5])
34             avg_time.append(i[21])
35 
36 line = (
37     Line(init_opts=opts.InitOpts(theme=ThemeType.CHALK, width="1500px", height="800px"))
38     .add_xaxis(tm)
39     .add_yaxis('user', uc, is_smooth=True)
40     .add_yaxis('qps', qps, is_smooth=True)
41     .add_yaxis('fps', fps, is_smooth=True)
42     .add_yaxis('avg_t', avg_time, is_smooth=True)
43     # .add_yaxis("qps", qps, markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),)
44     .set_global_opts(
45         title_opts=opts.TitleOpts(title="getConf接口压测情况【总请求数:1418818, QPS: 554.02】"),
46         tooltip_opts=opts.TooltipOpts(trigger="axis"),
47         toolbox_opts=opts.ToolboxOpts(is_show=True, orient="vertical", pos_left="1%",  pos_top="10%"),
48         xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
49     )
50 )
51 line.render("mycharts1558.html")

总请求数与qps可以读取另外个csv文件获取,这里就写死一个

关于报表的生成,不动的自行去文档地址仔细研究研究,挺全的,各种报表样式都有。

 

标签:10,pyecharts,--,locust,step,time,opts
来源: https://www.cnblogs.com/drewgg/p/13524255.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有