-
Notifications
You must be signed in to change notification settings - Fork 244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
为什么每次spawn之前要先stop所有的job,而不是像python版那样在已有连接上增加呢? #178
Comments
嗯,这里的实现确实跟 python 版本不一致。主要是 python 版本依赖 locustfile,master 发消息过来,它以为 worker 是知道 locustfile 里面的 task 定义的。但是编写 boomer task 的时候不需要这个文件。这里需要想想怎么关联起来。 但是目前这个实现,跟你描述的 “重新建立, 之前的连接被清理, 导致最终的请求数不准”,这两者没有直接的关联吧。一般做 TCP 压测的时候,我建议是用预先创建好的连接池,然后 task 从连接池里面取连接来发请求,避免频繁地创建和销毁连接。 |
取决于
|
实际情况确实会出现在 spawn 过程中,已经有协程开始发送请求的情况,也就是 |
@xyzdev-cell 如果只有请求数量不准这个问题,你可以自行用 atomic 记一下请求数,然后把 runner.go 里面定时上报给 master 的 stats 信息打出来核对一下。 |
是否有计划将其改成类似于python这种形式,实现spawn的时候,在已有的连接上增加呢。创建一个work的线程池是否可以可以实现这种功能 |
@kylezk777 需要先澄清一下,连接和 goroutine 数没有直接联系。后续在 goroutine 的增加和减少上,可以考虑做成 locust 那样。 |
我们目前项目想要实现阶梯性的压测,比如target是1000个goroutine,分阶段达到1000,类似于jmeter那种,目前好像只能通过手动去改变spawn,但是就像这个issue所说的,每次spawn会stop之前所有的,压力会有个骤降,然后再重新for循环开启goroutine,这种效果不是很理想。请问是否有确切的计划,去改善这方面的功能吗 |
@kylezk777 阶梯性的压测,用 ratelimiter 来控制 RPS 能否满足?还是说一定要通过 goroutine 来实现多个并发?我目前知道要怎么改善,但是因为工作比较满,暂时没时间编码。如果你能完成,欢迎 PR。 改善这块的主要考虑点:
|
是否考虑引入context,增加worker 就把对应的cancelFunc 加入到cancelFuncList 。需要减少worker 的时候就从cancelFuncList尾部执行对应cancelFunc。 |
目前已经实现。 |
Describe the bug
因为每次stop再重新建立, 之前的连接被清理, 导致最终的请求数不准
参照examples中的tcp写的script, 可以认为就是用的 tcp中的client.go
2022/10/08 15:44:05 Spawning 1 clients immediately
2022/10/08 15:44:06 Spawning 2 clients immediately
2022/10/08 15:44:07 Spawning 3 clients immediately
2022/10/08 15:44:08 Spawning 4 clients immediately
2022/10/08 15:44:09 Spawning 5 clients immediately
2022/10/08 15:44:10 Spawning 6 clients immediately
2022/10/08 15:44:11 Spawning 7 clients immediately
2022/10/08 15:44:12 Spawning 8 clients immediately
2022/10/08 15:44:13 Spawning 9 clients immediately
Spawning 2 clients 把 1clients停了
Spawning 3 clients 时把 2 clients停了
而在python中, 是根据已有worker来新增或减少的
The text was updated successfully, but these errors were encountered: