AWS RDS bağlantı sınırları


45

Aşağıdaki dokümantasyondaki gibi,
Magento 1.9 kullanıyorum ve bazı noktalarda web sitesine hizmet dışı kaldıktan sonra maksimum sayıya ulaşıyorum.
Bu sorunu çözmek için önerilen herhangi bir yol var mı?

Anladığım kadarıyla, eğer bir RDS sunucusuna 2 web sunucusu bağlantım varsa .. o zaman 2 RDS bağlantım olmalı, daha fazlası değil.


2
"Anladığım kadarıyla, bir RDS sunucusuna 2 web sunucusu bağlantım varsa .. o zaman 2 RDS bağlantım olmalı, daha fazlası değil." Bu yanlış bir anlayış. Çalışan işlemi veya iş parçacığı başına genellikle 1 bağlantıdır.
Michael - sqlbot

Thanks @ Michael-sqlbot .. Evet, bunu yanlış anlıyorum, ancak emin olmak istedim. Ancak, neden RDS'ye 40 bağlantı geldiğinde diğer bağlantıyı reddediyor ve diğer bağlantılar kapatılıncaya kadar erişilemiyor?
Alaa Badran

Bu, tasarımdan, max_connectionsparametreden. Çoğu iş yükü için, güvenli bir şekilde artırabilmelisiniz, çünkü güvenli bir şekilde muhafazakar bir varsayılan değerdir ... ancak bu yükselmelerin nedenini araştırmak isteyeceksiniz.
Michael - sqlbot

Yanıtlar:


65

AWS RDS max_connections limit değişkeni Örnek türüne dayanır, böylece RDS'nizi yükseltebilir veya daha fazla çoğaltma yapabilirsiniz.

Max_connections sınırına sahip RDS türleri:

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

Tarafından değinen AWS RDS MySQL Örneği Boyutları en max_connections 2015 yılında

2017-07 Güncellemesi

Geçerli RDS MySQL max_connections ayarı, varsayılan olarak 512 MB RAM ile t2.micro{DBInstanceClassMemory/12582880} kullanıyorsanız , max_connections (512 * 1024 * 1024) / 12582880 ~ = 40 vb. Olabilir.


Her bir Web sunucusunun, Web sunucusundan gelen SQL isteklerinize bağlı olarak RDS'ye birçok bağlantısı olabilir.


Bunu biliyorum, ancak 40 bağlantıya ulaştığınızda, sunucu yanıt vermiyor mu? Şunu
Alaa Badran

1
RDS Parametre Gruplarını kontrol ediyorum, max_connections varsayılan olarak {DBInstanceClassMemory/12582880}, bu nedenle 512 MB RAM ile t2.micro kullanıyorsanız, max_connections (512*1024*1024)/12582880 = 40.6940 max bağlantınızı açıklayabilecek olabilir.
Nick Tsai,

2
Değeri, bu RDS MySQL'i komutla sorgulayarak kontrol edebilirsiniz show variables like 'max_connections';.
Nick Tsai,

1
Yeni bir tane oluşturabilir parameter groupve max_connections değerini istediğiniz değere göre değiştirebilirsiniz . Bu, RDS örneğiniz için yeni bağlantı sınırı olacaktır.
ters eğik çizgi

1
Bu cevap 2019'da geçerlidir. Bunu yaparak her zaman kendinizi kontrol edebilirsinizSHOW VARIABLES WHERE Variable_name='max_connections'
Dave Stein

30

Değişebilirsin max_connectionsvarsayılan parametre politikası güncellenirken biri tarafından değeri veya yeni bir tane oluşturun - Ben ikinci gidiyor öneririm.

  • RDS'ye git
  • Parametre Grupları
  • Yeni bir Parametre Grubu oluşturun (AWS her şeyi varsayılan olarak bırakacaktır)
  • için arama max_connectionsdeğer
  • Kullanılacak değeri değiştirin
  • RDS örneğine gidin ve değiştirin
  • Oluşturulan yeni Parametre grubunu seçin ve örneği yeniden başlatın veya bir sonraki bakım penceresi sırasında AWS'nin onu yeniden başlatmasına izin verin

Bu yardımcı olur umarım!


2
<3 bu kabul edilen cevap olmalıdır
bbozo

2
max_connections 'ı 1000' e ayarlasam bile, rds hala mikro örnek için sadece 100 maksimum bağlantıya izin verdi
Miguel Mota

1

Sunucu yapılandırmasındaki maksimum bağlantıları artırmak sorunu çözebilirken, uygulama yapılandırmalarınızı ve uygulamalarınızı doğrulamayı düşünmelisiniz.

Magento konusunda uzman değilim, ancak son zamanlarda üzerinde çalıştığım bir projede benzer bir sorun yaşadığım için, kullandığım çerçevenin varsayılan uygulamasının veritabanına yapılan her çağrı ile bir bağlantı oluşturduğunu fark ettim.

Bu, bazılarına herhangi bir soruna yol açmasa da, daha fazla ziyaretçiniz veya veritabanının yoğun olduğu ve birden fazla bağlantıda çalışan bazı görevleriniz olduğu anda, sunucunun "ÇOK ÇOK BAĞLANTILAR" hatasıyla çökmesini önlemenin en iyi yolu, bir veritabanı uygulamaktır. bağlantı havuzu

Bu, uygulamanın, sunucunun yönetebileceği daha fazla bağlantı oluşturmasını ve uygulamayı kullanıcılara çökmemesini önler. Bir bağlantı havuzu, bir bağlantı mevcut oluncaya kadar veri tabanına erişme isteklerinin bir sırasını saklar, böylece kullanıcıların isteğini işleme koyabilir.

Bağlantı havuzunun çoklu iş parçacığı senaryosunda iş parçacığı güvenli olması gerektiğini unutmayın.


1

RDS örneğinize giriş yapın (bir MySQL istemcisi kullanarak) ve aşağıdaki sorguyu çalıştırın:

SHOW VARIABLES LIKE 'max_connections';

1

Postgresql t3 örnekleri için gerçek bilgi (default.postgres10 parametre grubu):

  • 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

Default.postgres9 ve default.postgres11 için benzer


0

Bu maksimum 40 bağlantı değil, maksimum 40 RDS örneği. Büyük olasılıkla açıklamanıza göre sadece 1 örnek kullanıyorsunuz.

RDS sunucusuyla binlerce bağlantı kurabilirsiniz, çünkü her oturum veritabanında bir oturum açıldığında yeni bir bağlantı oluşturur. Muhtemelen performans kısıtlamaları ile karşılaşıyorsunuz ve RDS örneğini daha büyük hale getirmeye çalışmalısınız.


Thanks @jason Aşağıdaki bilgilerim var: 40 bağlantıya ulaşırken, RDS diğer bağlantılar kapanana kadar cevap vermez. R3.xlarge RDS örneğine sahibiz. İşte bunun bir ekran görüntüsü: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/… Çok sayıda bağlantıya sahip boşta işlemcimiz var
Alaa Badran

Bu bağlantılar, başka bir şey değil
Orlando
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.