Skip to content
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

使用gomq或者goczmq会有协程没有退出 #159

Open
boboalex opened this issue Mar 4, 2022 · 11 comments
Open

使用gomq或者goczmq会有协程没有退出 #159

boboalex opened this issue Mar 4, 2022 · 11 comments

Comments

@boboalex
Copy link

boboalex commented Mar 4, 2022

目前使用boomer时,会在一个常驻的后台服务里面去进行调用,在服务接收到压测请求之后,会生成 boomer 实例对象,类似于:
testingBoomer := boomer.NewBoomer(host, port)
然后在每一轮压测,使用 run 和 quit 方法用于不断执行用例,并且根据locust 的 rps 结果调整并发数以获取服务端更高的 rps:
testingBoomer.Run(task)
testingBoomer.Quit()
然而不论在使用 gomq 还是 goczmq,都可以发现在每次执行 Run() 和 Quit() 之后,通过 runTime 监控到协程数量会随着每一轮的压测加一个:
image
image
由于压测逻辑是基于一个后台稳定服务进行运行的,除了直接 kill 掉后台服务,目前好像没有办法去清理掉这些遗留下来的协程了,是否可以有什么办法,尽量避免这个问题

@myzhan
Copy link
Owner

myzhan commented Mar 4, 2022

  1. czmq 这个,应该是这个协程在做阻塞的 IO 操作导致,我看看有没有办法解决。
  2. gomq 这个,感觉是泄漏在 gomq 内部,因为我在外部有调用 Close 方法。

@boboalex
Copy link
Author

boboalex commented Mar 5, 2022

感谢哈

  1. czmq 这个,应该是这个协程在做阻塞的 IO 操作导致,我看看有没有办法解决。
  2. gomq 这个,感觉是泄漏在 gomq 内部,因为我在外部有调用 Close 方法。

@TheSlientnight
Copy link

你好,目前使用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

@myzhan
Copy link
Owner

myzhan commented Jul 8, 2022

@TheSlientnight 我这边没重现,Exiting 日志也不是 boomer 打的

@TheSlientnight
Copy link

@TheSlientnight 我这边没重现,Exiting 日志也不是 boomer 打的

boomer版本为v1.6.1,环境为m1版本的Mac mini,通过命令行和Goland debug模式均会出现此情况

@myzhan
Copy link
Owner

myzhan commented Jul 11, 2022

@TheSlientnight boomer 没有发布过 v1.6.1 版本

@TheSlientnight
Copy link

image
@myzhan 这里是我下载后默认获取的,尝试重新安装后依然为此版本

@myzhan
Copy link
Owner

myzhan commented Jul 11, 2022

@TheSlientnight 除了 M1,你在其他机器上遇到过吗?

@TheSlientnight
Copy link

在另一台i5的机器上也有遇到,以下为我的使用方法
image

@myzhan
Copy link
Owner

myzhan commented Jul 11, 2022

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

@TheSlientnight
Copy link

感谢大大的耐心解答

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants