问题代码:
func load(c *gin.Context){
go func(c *gin.Context){
c.GetString(....)
}(c)
go func(c *gin.Context){
c.Set(...)
}(c)
}
导致服务偶发性停止,对外表现为:某台实例服务的某一分钟出现大量502且200流量降低接近0。
查看日志:
fatal error: concurrent map read and map write
意思是并发对map进行读写产生错误
分析:
问题代码,对gin.Context变量进行读写。
type Context struct {
writermem responseWriter
Request *http.Request
Writer ResponseWriter
Params Params
handlers HandlersChain
index int8
engine *Engine
// Keys is a key/value pair exclusively for the context of each request.
Keys