Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Teste de carga da API Golang RESTful causando muitas conexões de banco de dados


Vá para database/sql não impede que você crie um número infinito de conexões com o banco de dados. Se houver uma conexão ociosa no pool, ela será usada, caso contrário, uma nova conexão será criada.

Portanto, sob carga, seus manipuladores de solicitação sql.DB provavelmente não estão encontrando conexões ociosas e, portanto, uma nova conexão é criada quando necessário. Isso muda um pouco - reutilizando conexões ociosas quando possível e criando novas quando necessário -, atingindo o máximo de conexões para o banco de dados. E, infelizmente, no Go 1.1 não há uma maneira conveniente (por exemplo, SetMaxOpenConns ) para limitar as conexões abertas.

Atualize para uma versão mais recente do Golang. Em Go 1.2+ você obtém SetMaxOpenConns . E confira a documentação do MySql para iniciar a configuração a> e depois afinar.
db.SetMaxOpenConns(100) //tune this

Se você precisar usar o Go 1.1, precisará garantir em seu código que *sql.DB está sendo usado apenas por N clientes por vez.