sql >> Databasteknik >  >> RDS >> Mysql

Golang RESTful API-belastningstestning som orsakar för många databasanslutningar

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.



  1. JSP/Servlets:Hur laddar jag upp en zip-fil, packar upp den och extraherar CSV-filen

  2. Hur Round() fungerar i PostgreSQL

  3. Radstorleken är för stor fel i mysql skapa tabellfråga

  4. Vilken Visual Studio behöver jag för MySQL?