Mysql: Mendapat "dial tcp 127.0.0.1:3306: connect: tidak dapat menetapkan alamat yang diminta" saat menggunakan beberapa goroutine bersamaan

Dibuat pada 17 Jan 2019  ·  3Komentar  ·  Sumber: go-sql-driver/mysql

Deskripsi masalah

Saya mendapatkan "dial tcp 127.0.0.1:3306: connect: tidak dapat menetapkan alamat yang diminta" setelah beberapa waktu, ketika menggunakan beberapa goroutine bersamaan :

  • Saat menggunakan 8 goroutine bersamaan => semuanya baik-baik saja
  • Saat menggunakan lebih banyak goroutine => setelah sekitar 15 detik, setiap permintaan gagal dengan err="dial tcp 127.0.0.1:3306: connect: tidak dapat menetapkan alamat yang diminta". Sekitar 35.000 permintaan telah berhasil dilakukan sebelum kegagalan pertama.

Sepertinya driver sql tidak dapat memperoleh port baru untuk membuat koneksi baru, tetapi jika demikian saya tidak mengerti mengapa itu tidak menggunakan kembali koneksi yang ada dari pool?

Saya memiliki DBStats berikut ketika kesalahan terjadi:
(sql.DBStats) {
MaxOpenConnections: (int) 0,
Koneksi Terbuka: (int) 64,
Digunakan: (int) 64,
Menganggur: (int) 0,
Jumlah Tunggu: (int64) 0,
WaitDuration: (waktu.Durasi) 0s,
MaxIdleClosed: (int64) 28252,
MaxLifetimeClosed: (int64) 0
}

Saya menggunakan go-sql-driver V1.4.1 dengan go 1.11.2, untuk mencapai mariaDB yang berjalan secara lokal sebagai wadah buruh pelabuhan.
Saya contoh di bawah ini saya menambahkan "panik" hanya untuk tidak dibanjiri oleh banyak kesalahan serupa.

Contoh kode

// 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

Catatan eror

{"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

Konfigurasi

*go-sql-driver V1.4.1

*Go version: go version go1.11.2 linux/amd64

*MariaDB 10.4.1 dalam wadah buruh pelabuhan

Server OS: Misalnya Debian 8.1 (Jessie), Windows 10

Komentar yang paling membantu

Coba ini.

db.SetMaxIdleConns(64)
db.SetMaxOpenConns(64)
db.SetConnMaxLifetime(waktu.Minure)

Semua 3 komentar

Coba ini.

db.SetMaxIdleConns(64)
db.SetMaxOpenConns(64)
db.SetConnMaxLifetime(waktu.Minure)

Terima kasih banyak @methane atas tanggapan Anda yang sangat cepat, percobaan berhasil!
Saya masih sedikit terkejut bahwa nilai default tidak berfungsi dengan benar dan saya tidak mengerti mengapa tetapi Anda memang memecahkan masalah saya.

Lihat artikel ini.
http://techblog.en.klab-blogs.com/archives/31093990.html

Semua gambar dalam artikel hilang. Mereka hidup dalam artikel versi Jepang.

http://dsas.blog.klab.org/archives/2018-02/configure-sql-db.html

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Dieterbe picture Dieterbe  ·  6Komentar

pmoosman picture pmoosman  ·  9Komentar

AlekSi picture AlekSi  ·  3Komentar

albrow picture albrow  ·  7Komentar

victormongi picture victormongi  ·  4Komentar