Gin与Mysql driver引发的服务崩溃
在 Go Web 服务中,*gin.Context 很容易被当作普通的请求参数向业务层传递。当业务层又启动异步任务,并在任务中继续使用这个对象时,请求生命周期和 goroutine 生命周期就会发生错位。高并发场景下,Gin 对象池的复用会把这个问题放大,最终触发 MySQL driver 的异常取消路径,导致进程 panic。
大约 17 分钟

孤舟蓑笠翁,独钓寒江雪







在 Go Web 服务中,*gin.Context 很容易被当作普通的请求参数向业务层传递。当业务层又启动异步任务,并在任务中继续使用这个对象时,请求生命周期和 goroutine 生命周期就会发生错位。高并发场景下,Gin 对象池的复用会把这个问题放大,最终触发 MySQL driver 的异常取消路径,导致进程 panic。


Go标准库自带的编码库

