์ฌ๋ฌ ๋์ goroutines๋ฅผ ์ฌ์ฉํ ๋ ์ผ๋ง ํ "dial tcp 127.0.0.1:3306: connect: cannot assign requested address"๊ฐ ๋ํ๋ฉ๋๋ค.
SQL ๋๋ผ์ด๋ฒ๊ฐ ์ ์ฐ๊ฒฐ์ ์ค์ ํ๊ธฐ ์ํด ์ ํฌํธ๋ฅผ ์ป์ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๊ทธ๋ ๋ค๋ฉด ํ์์ ๊ธฐ์กด ์ฐ๊ฒฐ์ ์ฌ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ DBStats๊ฐ ์์ต๋๋ค.
(sql.DBStats) {
MaxOpenConnections: (int) 0,
OpenConnections: (int) 64,
์ฌ์ฉ ์ค: (int) 64,
์ ํด: (int) 0,
๋๊ธฐ ํ์: (int64) 0,
WaitDuration: (time.Duration) 0์ด,
MaxIdleClosed: (int64) 28252,
MaxLifetimeClosed: (int64) 0
}
go-sql-driver V1.4.1์ go 1.11.2์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋์ปค ์ปจํ
์ด๋๋ก ๋ก์ปฌ์์ ์คํ๋๋ MariaDB์ ๋๋ฌํฉ๋๋ค.
์๋์ ์์์๋ ์ ์ฌํ ์ค๋ฅ๊ฐ ๋ง์ด ๋ฐ์ํ์ง ์๋๋ก "ํจ๋"์ ์ถ๊ฐํ์ต๋๋ค.
// the below code is called repetitly from a configurable number of worker fed using channels (fan-out)
// Mark visa_card entry as migrated
query := fmt.Sprintf(UPDATE visa_card SET migrated=TRUE WHERE id_card=%s, this.idCard)
_, err = conf.MySql.ExecContext(ctx, query)
if err != nil {
log.Error(ctx, log.EventTypeBusiness, "", err)
spew.Dump(conf.MySql.Stats())
panic("the END")
}
return err
{"level":"info","dateTime":"2019-01-17T14:58:04.095+0100","msg":"","appVersion":"0.0.0","component":"VISA-MIGRATOR","country":"bw","eventType":"incoming request","requestId":"d25e58f8-8228-4a7f-9cc4-1fd9ea2230b4","useCase":"","parameters":{"request_headers":{},"request_http_method":"POST","request_uri":"/startImportActiveCards"},"caller":"common/utils/log/ginLog.go:70"}
{"level":"error","dateTime":"2019-01-17T14:58:20.562+0100","msg":"","appVersion":"0.0.0","component":"VISA-MIGRATOR","country":"bw","eventType":"internal","requestId":"d25e58f8-8228-4a7f-9cc4-1fd9ea2230b4","useCase":"startMigration","peer":"internal","caller":"migrator/migrate/migrateActiveCards.go:211","errorDetails":"dial tcp 127.0.0.1:3306: connect: cannot assign requested address"}
(sql.DBStats) {
MaxOpenConnections: (int) 0,
OpenConnections: (int) 50,
InUse: (int) 50,
Idle: (int) 0,
WaitCount: (int64) 0,
WaitDuration: (time.Duration) 0s,
MaxIdleClosed: (int64) 28258,
MaxLifetimeClosed: (int64) 0
}
panic: the END
*go-sql-driver V1.4.1
*์ด๋ ๋ฒ์ : go1.11.2 linux/amd64 ๋ฒ์ ์ผ๋ก ์ด๋
*๋์ปค ์ปจํ ์ด๋์ MariaDB 10.4.1
์๋ฒ OS: ์: Debian 8.1(Jessie), Windows 10
์ด ์๋.
db.SetMaxIdleConns(64)
db.SetMaxOpenConns(64)
db.SetConnMaxLifetime(์๊ฐ.๋ฏธ์)
๋งค์ฐ ๋น ๋ฅธ ์๋ต์ ๋ํด @methane ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ๊ฐํ์ ์ฑ๊ณต์ ์
๋๋ค!
๋๋ ์ฌ์ ํ ๊ธฐ๋ณธ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ์ฝ๊ฐ ๋๋๊ณ ๊ทธ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ์ง๋ง ์ค์ ๋ก ๋น์ ์ ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ด ๊ธฐ์ฌ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
http://techblog.en.klab-blogs.com/archives/31093990.html
๊ธฐ์ฌ์ ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ฌ๋ผ์ง๋๋ค. ๊ทธ๋ค์ ๊ธฐ์ฌ์ ์ผ๋ณธ์ด ๋ฒ์ ์์ ์ด์ ์์ต๋๋ค.
http://dsas.blog.klab.org/archives/2018-02/configure-sql-db.html
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ์๋.
db.SetMaxIdleConns(64)
db.SetMaxOpenConns(64)
db.SetConnMaxLifetime(์๊ฐ.๋ฏธ์)