boomer
boomer copied to clipboard
使用gomq或者goczmq会有协程没有退出
目前使用boomer时,会在一个常驻的后台服务里面去进行调用,在服务接收到压测请求之后,会生成 boomer 实例对象,类似于:
testingBoomer := boomer.NewBoomer(host, port)
然后在每一轮压测,使用 run 和 quit 方法用于不断执行用例,并且根据locust 的 rps 结果调整并发数以获取服务端更高的 rps:
testingBoomer.Run(task)
testingBoomer.Quit()
然而不论在使用 gomq 还是 goczmq,都可以发现在每次执行 Run() 和 Quit() 之后,通过 runTime 监控到协程数量会随着每一轮的压测加一个:
由于压测逻辑是基于一个后台稳定服务进行运行的,除了直接 kill 掉后台服务,目前好像没有办法去清理掉这些遗留下来的协程了,是否可以有什么办法,尽量避免这个问题
- czmq 这个,应该是这个协程在做阻塞的 IO 操作导致,我看看有没有办法解决。
- gomq 这个,感觉是泄漏在 gomq 内部,因为我在外部有调用 Close 方法。
感谢哈
- czmq 这个,应该是这个协程在做阻塞的 IO 操作导致,我看看有没有办法解决。
- gomq 这个,感觉是泄漏在 gomq 内部,因为我在外部有调用 Close 方法。
你好,目前使用newboomer的方法在run之后会直接退出,请问作者大大有留意到么 @myzhan 以下是我的使用方法: myBoomer := boomer.NewBoomer(host, port) limiter, _ := boomer.NewRampUpRateLimiter(maxThreshold, "0", 0) myBoomer.SetRateLimiter(limiter) myBoomer.Run(task1) 以下是运行结果 2022/07/08 18:25:01 Boomer is built with gomq support. 2022/07/08 18:25:01 Boomer is connected to master(tcp://127.0.0.1:5557) press Ctrl+c to quit. Exiting. 在程序运行后会秒退出,启动指令为go run main.go
@TheSlientnight 我这边没重现,Exiting 日志也不是 boomer 打的
@TheSlientnight 我这边没重现,Exiting 日志也不是 boomer 打的
boomer版本为v1.6.1,环境为m1版本的Mac mini,通过命令行和Goland debug模式均会出现此情况
@TheSlientnight boomer 没有发布过 v1.6.1 版本
@myzhan 这里是我下载后默认获取的,尝试重新安装后依然为此版本
@TheSlientnight 除了 M1,你在其他机器上遇到过吗?
在另一台i5的机器上也有遇到,以下为我的使用方法

你这个用法不对,Run 本身就是非阻塞的,执行完就退出了,参考一下例子吧 https://github.com/myzhan/boomer/blob/master/_examples/ratelimit/rampup/main.go
感谢大大的耐心解答