Gå til database/sql
forhindrer dig ikke i at oprette et uendeligt antal forbindelser til databasen. Hvis der er en ledig forbindelse i poolen, vil den blive brugt, ellers oprettes en ny forbindelse.
Så under belastning finder dine anmodningshandlere sql.DB sandsynligvis ingen ledige forbindelser, og derfor oprettes en ny forbindelse, når det er nødvendigt. Dette trækker lidt - genbruge ledige forbindelser, når det er muligt og skabe nye, når det er nødvendigt - og i sidste ende når de maksimale forbindelser for Db. Og desværre er der i Go 1.1 ikke en praktisk måde (f.eks. SetMaxOpenConns ) for at begrænse åbne forbindelser.
Opgrader til en nyere version af Golang. I Go 1.2+ du får SetMaxOpenConns . Og tjek MySql-dokumenterne for startindstilling a> og stil derefter.
db.SetMaxOpenConns(100) //tune this
Hvis du skal bruge Go 1.1, skal du sikre dig i din kode, at *sql.DB
bliver kun brugt af N klienter ad gangen.