Vai a database/sql
non impedisce di creare un numero infinito di connessioni al database. Se è presente una connessione inattiva nel pool, verrà utilizzata, altrimenti verrà creata una nuova connessione.
Quindi, sotto carico, i gestori delle richieste sql.DB probabilmente non trovano connessioni inattive e quindi viene creata una nuova connessione quando necessario. Questo rimpicciolisce un po' -riutilizzando le connessioni inattive quando possibile e creandone di nuove quando necessario-, raggiungendo alla fine le connessioni massime per il Db. E, sfortunatamente, in Go 1.1 non esiste un modo conveniente (ad es. SetMaxOpenConns ) per limitare le connessioni aperte.
Esegui l'upgrade a una versione più recente di Golang. In Vai 1.2+ ottieni SetMaxOpenConns . E consulta i documenti MySql per iniziare l'impostazione e poi sintonizzati.
db.SetMaxOpenConns(100) //tune this
Se devi usare Go 1.1 devi assicurarti nel tuo codice che *sql.DB
viene utilizzato solo da N client alla volta.