Skip to main content

Posts

Showing posts from December, 2024

The way I use go (golang) sql/mysql driver to create connection

I use go for web development and I have noticed I have a few problems with database connections to mysql using go-sql-driver/mysql . Database connections created and then never closed. I reached a point of 4,096 simultaneous connections and my mysql server have reached max-connections which reached a denial of service . I had to play a bit with some tweaking of the code and this is what I have reached: db.SetMaxOpenConns(200) // this works occasionally   db.SetMaxIdleConns(30) // this does not work but I keep it anyway db.SetConnMaxLifetime(time.Second * 30) // this also does not work but I keep it db.Exec("SET SESSION wait_timeout = 30") // this works db.Exec("SET SESSION interactive_timeout = 30") // and also this one Using the above directive I was able to have the number of connections under control. Please note that sometimes I still get more than 200 connections even though I set the maximum to 200, and sometimes it keeps the max 200. SetMaxIdleConns ...