sql >> Database teknologi >  >> RDS >> Mysql

Golang RESTful API-belastningstest forårsager for mange databaseforbindelser

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.



  1. Bash Script loop gennem MySQL

  2. Mysql 5.7.20:Kan ikke oprette en JSON-værdi fra en streng med CHARACTER SET 'binary'

  3. Der opstod en fejl under installationen af ​​pg (0.17.1), og Bundler kan ikke fortsætte

  4. Søg post med apostrof i mysql lignende forespørgsel