Batas koneksi AWS RDS

45

Server RDS datang dengan 40 koneksi maks, seperti dalam dokumentasi berikut ini
saya menggunakan Magento 1.9, dan pada beberapa titik, saya mencapai jumlah maks kemudian situs web tidak berfungsi.
Apakah Anda memiliki cara yang disarankan untuk menyelesaikan masalah ini?

Dari pemahaman saya, jika saya memiliki 2 koneksi server web ke server RDS .. maka saya harus memiliki 2 koneksi RDS, tidak lebih.

Alaa Badran
sumber
2
"Dari pemahaman saya, jika saya memiliki 2 koneksi server web ke server RDS .. maka saya harus memiliki 2 koneksi RDS, tidak lebih." Itu pemahaman yang salah. Biasanya 1 koneksi per proses pekerja atau utas.
Michael - sqlbot
Terima kasih @ Michael-sqlbot .. Ya saya salah paham, tapi saya ingin memastikan. Tetapi, mengapa ketika kita memiliki 40 koneksi yang datang ke RDS ia menolak koneksi lain dan tidak dapat dijangkau hingga koneksi lain ditutup?
Alaa Badran
Itu dengan desain, dari max_connectionsparameter. Untuk sebagian besar beban kerja, Anda harus dapat meningkatkannya dengan aman, karena ini merupakan nilai default konservatif yang aman ... tetapi Anda ingin menyelidiki penyebab lonjakan tersebut.
Michael - sqlbot

Jawaban:

65

Variabel batas AWS RDS max_connections didasarkan pada jenis Instance, sehingga Anda dapat memutakhirkan RDS Anda atau membuat lebih banyak replika.

Jenis RDS dengan batas max_connections:

  • t2.micro 66
  • t2.small 150
  • m3.medium 296
  • t2.medium 312
  • m3.lebih besar 609
  • t2.large 648
  • m4.lebih besar 648
  • m3.xlarge 1237
  • r3.besar 1258
  • m4.xlarge 1320
  • m2.xlarge 1412
  • m3.2xlarge 2492
  • r3.xlarge 2540

Merujuk oleh max_connections di AWS RDS Ukuran Instance MySQL pada tahun 2015

Perbarui 2017-07

Pengaturan RDS MySQL max_connections saat ini adalah default {DBInstanceClassMemory/12582880}, jika Anda menggunakan t2.micro dengan RAM 512MB, max_connections bisa berupa (512 * 1024 * 1024) / 12582880 ~ = 40, dan seterusnya.


Setiap server Web dapat memiliki banyak koneksi ke RDS, yang tergantung pada permintaan SQL Anda dari server Web.

Nick Tsai
sumber
Saya tahu ini, tetapi ketika ketika mencapai 40 koneksi, server tidak merespons? Lihat ini: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/…
Alaa Badran
1
Saya memeriksa RDS Parameter Groups, max_connections adalah default {DBInstanceClassMemory/12582880}, jadi ketika Anda menggunakan t2.micro dengan RAM 512MB, max_connections bisa jadi (512*1024*1024)/12582880 = 40.69yang bisa menjelaskan 40 koneksi maks Anda.
Nick Tsai
2
Anda dapat memeriksa nilainya dengan menanyakan RDS MySQL itu dengan perintah show variables like 'max_connections';.
Nick Tsai
1
Anda dapat membuat yang baru parameter groupdan mengubah nilai max_connections menjadi nilai yang Anda inginkan. Ini akan menjadi batas koneksi baru untuk instance RDS Anda.
backslashN
1
Jawaban ini berlaku pada tahun 2019. Anda selalu dapat memeriksa sendiri dengan melakukanSHOW VARIABLES WHERE Variable_name='max_connections'
Dave Stein
30

Anda dapat mengubah max_connectionsnilainya dengan memperbarui kebijakan parameter default atau membuat yang baru - saya sarankan menggunakan yang terakhir.

  • Pergi ke RDS
  • Grup Parameter
  • Buat Grup Parameter baru (AWS akan membiarkan semuanya sebagai default)
  • cari max_connectionsnilainya
  • Ubah nilai yang akan digunakan
  • Pergi ke instance RDS dan modifikasi
  • Pilih grup Parameter baru yang dibuat dan mulai ulang instance atau biarkan AWS mem-boot ulangnya selama jendela pemeliharaan berikutnya

Semoga ini membantu!

David
sumber
2
<3 ini seharusnya jawaban yang diterima
bbozo
2
meskipun saya atur max_connections ke 1000, rds masih hanya memperbolehkan 100 koneksi max pada instance mikro
Miguel Mota
1

Sementara meningkatkan koneksi maks pada konfigurasi server dapat memperbaiki masalah, Anda harus mempertimbangkan memverifikasi konfigurasi dan implementasi aplikasi Anda.

Saya bukan ahli Magento, tetapi karena saya baru-baru ini memiliki masalah serupa pada proyek yang sedang saya kerjakan, saya perhatikan bahwa implementasi standar kerangka kerja yang saya gunakan membuat koneksi dengan setiap panggilan ke database.

Meskipun hal itu mungkin tidak menimbulkan masalah bagi sebagian orang, saat Anda memiliki lebih banyak pengunjung atau beberapa tugas yang intensif basis data dan dapat berjalan pada beberapa koneksi, cara terbaik untuk mencegah server crash dengan kesalahan "TERLALU BANYAK KONEKSI" adalah dengan mengimplementasikan database kolam koneksi.

Ini mencegah aplikasi membuat lebih banyak koneksi yang dapat ditangani server, dan tidak membuat aplikasi mogok untuk pengguna. Kumpulan koneksi akan membuat antrian untuk permintaan untuk mengakses database sampai koneksi tersedia sehingga dapat melanjutkan dengan memproses permintaan pengguna.

Hanya perlu diingat bahwa kumpulan koneksi harus aman dalam skenario multi-thread.

Uriel Bertoche
sumber
1

Login ke instance RDS Anda (menggunakan klien MySQL) dan jalankan kueri berikut:

SHOW VARIABLES LIKE 'max_connections';
Shammi Shailaj
sumber
1

Info aktual untuk postgresql t3-instance (grup parameter default.postgres10):

  • db.t3.micro - 112 max_connections
  • db.t3.small - 225 max_connections
  • db.t3.medium - 450 max_connections
  • db.t3.large - 901 max_connections
  • db.t3.xlarge - 1802 max_connections
  • db.t3.2xlarge - 3604 max_connections

Mirip dengan default.postgres9 dan default.postgres11

anton.uspehov
sumber
0

Itu bukan 40 koneksi maks, yaitu maks 40 RDS instance. Kemungkinan besar Anda hanya menggunakan 1 instance berdasarkan deskripsi Anda.

Anda dapat memiliki ribuan koneksi ke server RDS karena setiap kali sesi dibuka dengan database, yang menciptakan koneksi baru. Anda mungkin mengalami kendala kinerja dan harus melihat ke dalam membuat contoh RDS lebih besar.

jason s
sumber
Terima kasih @jason, saya memiliki informasi berikut: Ketika mencapai 40 koneksi, RDS tidak merespons hingga koneksi lain ditutup. Kami memiliki instance RDS r3.xlarge. Berikut ini adalah screenshot dari ini: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/... Kami memiliki CPU yang menganggur dengan jumlah koneksi tinggi
Alaa Badran
Ini koneksi, bukan hal lain
Orlando