sql >> Base de Datos >  >> RDS >> Mysql

Las pruebas de carga de la API RESTful de Golang provocan demasiadas conexiones a la base de datos

Vaya a database/sql no le impide crear un número infinito de conexiones a la base de datos. Si hay una conexión inactiva en el grupo, se utilizará; de lo contrario, se crea una nueva conexión.

Entonces, bajo carga, sus controladores de solicitud sql.DB probablemente no encuentren conexiones inactivas y, por lo tanto, se crea una nueva conexión cuando sea necesario. Esto se agita un poco, reutilizando conexiones inactivas cuando es posible y creando nuevas cuando es necesario, y finalmente alcanza el máximo de conexiones para la base de datos. Y, desafortunadamente, en Go 1.1 no hay una forma conveniente (por ejemplo, SetMaxOpenConns ) para limitar las conexiones abiertas.

Actualice a una versión más nueva de Golang. En Go 1.2+ obtienes SetMaxOpenConns . Y consulte los documentos de MySql para iniciar la configuración y luego sintonizar.

db.SetMaxOpenConns(100) //tune this

Si debe usar Go 1.1, deberá asegurarse en su código de que *sql.DB solo está siendo utilizado por N clientes a la vez.