Golang to many connections как избежать?
Например, можете вынести переменную db в отдельный пакет и сделать её там глобальной. В функции init() этого пакета сделайте подключение к БД. Потом просто используйте эту переменную там, где надо.
думаю, если много запросов, на каждый запрос нужно создавать соединение - это уже ненужные расходы,
соединение с бд, как выше писали, всетаки лучше делать при старте сервиса, а не при новом запросе, 
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)			
}
...

}