Gå till database/sql
hindrar dig inte från att skapa ett oändligt antal anslutningar till databasen. Om det finns en ledig anslutning i poolen kommer den att användas, annars skapas en ny anslutning.
Så under belastning hittar din begäranhanterare sql.DB förmodligen inga lediga anslutningar och så en ny anslutning skapas vid behov. Detta väcker lite -återanvändning av lediga anslutningar när det är möjligt och skapa nya när det behövs-, för att i slutändan nå maxanslutningarna för Db. Och tyvärr, i Go 1.1 finns det inget bekvämt sätt (t.ex. SetMaxOpenConns ) för att begränsa öppna anslutningar.
Uppgradera till en nyare version av Golang. I Go 1.2+ du får SetMaxOpenConns . Och kolla in MySql-dokumenten för startinställning a> och ställ sedan in.
db.SetMaxOpenConns(100) //tune this
Om du måste använda Go 1.1 måste du se till i din kod att *sql.DB
används endast av N klienter åt gången.