本文测试连接mysql的超时时间。
这里的“连接”是建立连接的意思。
连接mysql的超时时间是通过参数timeout设置的。
1.建立连接超时测试
下面例子中,设置连接超时时间为5s,读超时时间6s。
MySQL server IP是192.168.0.101,端口3306。
每3s执行一次SQL。
// simple.go
package main
import (
"database/sql"
"log"
"time"
_ "github.com/go-sql-driver/mysql"
)
var DB *sql.DB
var dataBase = "root:Aa123456@tcp(192.168.0.101:3306)/?timeout=5s&readTimeout=6s"
func mysqlInit() {
var err error
DB, err = sql.Open("mysql", dataBase)
if err != nil {
log.Fatalln("open db fail:", err)
}
DB.SetMaxOpenConns(3)
DB.SetMaxIdleConns(3)
}
func main() {
mysqlInit()
for {
log.Println("start")
execSql()
time.Sleep(3*time.Second)
}
}
func execSql() {
var value int
err := DB.QueryRow("select 1").Scan(&value)
if err != nil {
log.Println("query failed:", err)
return
}
log.Println("value:", value)
}
启动程序:
go run simple.go
之后,接着使用iptables将所有发送到MySQL服务的数据包drop掉.
清除所有的过滤规则,防止干扰:
sudo iptables -F
设置drop策略