Golang 类型断言引发的一系列线上问题(协程通道有进不出,协程异常终止,interface断言(dotType方式)不匹配的类型会panic,)
问题引出场景
近期公司某个功能模块线上运行异常。异常情况:某个接口阻塞不通,但服务状态OK. heart-beat /ping 可以通;
代码背景:由于需要防止以避免服务器资源耗尽,接口内部使用了 全局的channel 缓冲通道 对该接口进行全局访问次数限制,此处贴代码
从执行顺序上看,似乎没有什么问题。但真实运行后问题出在了业务 fn()方法内部,重点 :fn方法若内部异常Panic时,被 recover 以后,是不会 走到 业务的出通道里,因此导致此次业务任务的通道一直被占用。重复70次同样类型数据
原创
2021-07-05 18:50:14 ·
350 阅读 ·
0 评论