Buka database/sql
tidak mencegah Anda membuat koneksi ke database dalam jumlah tak terbatas. Jika ada koneksi idle di pool, itu akan digunakan, jika tidak koneksi baru dibuat.
Jadi, di bawah beban, penangan permintaan Anda sql.DB mungkin tidak menemukan koneksi yang menganggur dan koneksi baru dibuat saat dibutuhkan. Ini berputar sebentar -menggunakan kembali koneksi idle bila memungkinkan dan membuat yang baru saat dibutuhkan-, akhirnya mencapai koneksi maksimal untuk Db. Dan, sayangnya, di Go 1.1 tidak ada cara yang nyaman (mis. SetMaxOpenConns ) untuk membatasi koneksi terbuka.
Tingkatkan ke versi Golang yang lebih baru. Di Go 1.2+ anda mendapatkan SetMaxOpenConns . Dan lihat dokumen MySql untuk memulai pengaturan lalu setel.
db.SetMaxOpenConns(100) //tune this
Jika Anda harus menggunakan Go 1.1, Anda harus memastikan dalam kode Anda bahwa *sql.DB
hanya digunakan oleh N klien pada satu waktu.