• 阅读locust源码小记----分布式运行如何停止


    首先带着问题找答案。。。

    思考:分布式运行时,怎么控制什么时间停止压测?

    启动master时可以传参:-t或者--run-time

    先来看下关于这个参数的介绍:(文件:argument_parser.py)

    运行指定的时间之后停止,例如300s,20m,3h,1h30m等等,只能跟--headless一起结合使用,默认是一直运行的

    --headless 是指无图形模式启动,对应于locust0.*版本的--no-web

    紧接着看main.py这个文件:

     

     如果指定了run_time参数,会启动一个定时任务,这个定时任务会在指定的时间之后运行一个事件:runner.quit()   ,也就是退出runner

    接着看下runners.py文件

     第一步:首先master先判断当前状态如果不是ready,stopped,stopping,则 修改状态为stopping,并且遍历slave,给每个slave发送stop消息,  紧着触发test_stop事件,

     第二步:遍历slave,给每个slave发送quit消息,然后睡眠0.5s,然后杀死协程

    其中,绿色方框里面那句,虽然触发了test_stop事件,但是没找到代码里面给test_stop事件注册监听器(有知道的大佬欢迎评论留言。。。。。)

     

     

    slave收到stop的消息之后:更新状态为cleanup,杀死新增用户的协程(如果存在并且不是ready),停止用户,更新状态为stopped,CPU日志警告,给master发送client_stopped的消息,发送client_ready的消息,设置worker状态为ready

    slave收到quit的消息之后:更新状态为cleanup,杀死新增用户的协程(如果存在并且不是ready),停止用户,更新状态为stopped,CPU日志警告,触发report_to_master事件,给master发送stats消息(发送一个最终的报告,以防存在任何没有被上报的采样数据),杀死协程

  • 相关阅读:
    CSS 权威指南 CSS实战手册 第四版(阅读笔记)
    iframe交互(一)父页面自动高度
    连接微服务
    学习SQLYog
    sourceTree的安装以及破解
    sql 根据子级ID获取所有父级
    新手Python入门安装(一)
    C# 真正完美的 汉字转拼音
    供应链相关的书和博客
    网易跟帖为什么火
  • 原文地址:https://www.cnblogs.com/zhaijing/p/15426374.html
Copyright © 2020-2023  润新知