-
Notifications
You must be signed in to change notification settings - Fork 195
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
epoll busy loop #25
Comments
Line 44 in 9d9d1c0
https://github.com/Allenxuxu/ringbuffer/blob/master/pool/pool.go 这是有意为之的。 |
意思是这居高不下的CPU使用率,等有新连接进来了会重用吗? |
CPU使用率 居高不下???? |
就是那个 cpu使用率一直就像上面我发的top命令显示那样 ,一直100% |
应该是客户端虽然断开了,但是服务端还在处理断开逻辑,你可以加上打印,看看所有链接断开后 cpu 使用率情况。 |
这都过了快两个小时了 ,一直没有新连接进来,但是服务端一直这样 cpu 100% |
把完整 代码贴出来,我等会有时间试试 |
|
我这边一直 cpu 使用率一直很正常(macbook),你是啥环境? |
另外,上面客户端有问题, wg.Add(1) 不能放在 go fun(){}() 里面执行。 |
centos 6.4 |
这个现象是 必现,还是 偶现 |
客户端多运行几次就会出现, 用5000个并发 感觉更容易出现
|
提供下你完整的 客户端测试代码 和 复现步骤,我晚上回家用 ubuntu 试试。 |
客户端多运行几次就会出现, 用5000个并发 感觉更容易出现
完整的代码都在 https://github.com/defsky/mircore |
老哥,这个 bug 应该是修复了, 你有空拉下最新的代码,再测一下看看。 |
我用测试客户端试了一下,cpu持续高负载的情况看起来是解决了。不过客户端关闭后,服务端还是会有连接不能关闭 |
你如何知道,连接没有断开? |
服务端有个定时任务,定时输出活动连接的数目。每个连接关闭的时候都会在OnClose回调里面将连接移除。但是客户端已经关闭了,活动连接数还不为0,说明就还有连接没有触发到OnClose回调吧
|
我这边测试 一直正常啊,是不是 你服务哪边有问题? 这是我测试服务端: |
在OnConnect函数里面加一个Send操作就有毛病了,就像这样:
效果像这样:
你试试呢? |
重复 close ,这是个 bug,修复了,老哥再试试呢 |
@defsky 试了么,老哥 |
好像回复没成功呢。。。现在OnClose回调里面获取Context会崩溃 |
ok,看来 busy loop 的问题修复了。 Context 是我的问题,我不小心把之前修复的代码又给还原了😂。 Context 相关 issue: #24 |
我写了个客户,启动500个协程去连接服务器后立刻关闭连接。发现有时候客户端这边连接已经关闭完了,服务端资源还没释放,就像下面这样:
测试用的客户端代码是这样的:
执行结果是这样的:
The text was updated successfully, but these errors were encountered: