zoukankan      html  css  js  c++  java
  • 阅读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消息(发送一个最终的报告,以防存在任何没有被上报的采样数据),杀死协程

  • 相关阅读:
    Centeos7搭建selenium+Chrome浏览器
    数据结构学习篇之栈和队列
    数据结构学习篇之线性表
    Tornado基础学习篇
    Python控制函数运行时间
    python线程实现异步任务
    Python实现几种简单的排序算法
    python爬虫遇到会话存储sessionStorage
    Python 有哪些优雅的代码实现让自己的代码更pythonic?
    Ubuntu查看端口使用情况,使用netstat命令:
  • 原文地址:https://www.cnblogs.com/zhaijing/p/15426374.html
Copyright © 2011-2022 走看看