думаю, если много запросов, на каждый запрос нужно создавать соединение - это уже ненужные расходы,
соединение с бд, как выше писали, всетаки лучше делать при старте сервиса, а не при новом запросе,
db.SetMaxOpenConns - решит задачу, но кажется мне, опять таки при множестве запросов, db.Close() не всегда будет успевать закрывать и опять будут проблемы..
вижу как-то так:
func someMethod(db *sql.DB, e map[string]string) {
}
func main(){
db, err := sql.Open("mysql", "user:pass@tcp(10.10.10.10:3036)/dbname")
if err != nil {
log.Print(err.Error())
}
defer db.Close()
....
switch e["Event"] {
case "SomeEvent":
go someMethod(db,e)
}
...
}