Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Golang RESTful API load testing menyebabkan terlalu banyak koneksi database

Buka database/sql tidak mencegah Anda membuat koneksi ke database dalam jumlah tak terbatas. Jika ada koneksi idle di pool, itu akan digunakan, jika tidak koneksi baru dibuat.

Jadi, di bawah beban, penangan permintaan Anda sql.DB mungkin tidak menemukan koneksi yang menganggur dan koneksi baru dibuat saat dibutuhkan. Ini berputar sebentar -menggunakan kembali koneksi idle bila memungkinkan dan membuat yang baru saat dibutuhkan-, akhirnya mencapai koneksi maksimal untuk Db. Dan, sayangnya, di Go 1.1 tidak ada cara yang nyaman (mis. SetMaxOpenConns ) untuk membatasi koneksi terbuka.

Tingkatkan ke versi Golang yang lebih baru. Di Go 1.2+ anda mendapatkan SetMaxOpenConns . Dan lihat dokumen MySql untuk memulai pengaturan lalu setel.

db.SetMaxOpenConns(100) //tune this

Jika Anda harus menggunakan Go 1.1, Anda harus memastikan dalam kode Anda bahwa *sql.DB hanya digunakan oleh N klien pada satu waktu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah akan menggunakan SET NAMA

  2. MySQL GROUP &COUNT Beberapa tabel

  3. mengubah baris tabel menjadi kolom di mysql

  4. Kesalahan dengan Plugin Maven GAE + Google Cloud SQL

  5. JDBC mengembalikan jumlah baris yang terpengaruh yang salah