Межі підключення AWS RDS


45

Сервер RDS придумав 40 максимумів підключення, як в наступній документації
я використовую Magento 1.9, а в деяких моментах я досягаю максимального числа, тоді веб-сайт не працює.
Чи є у вас якийсь рекомендований спосіб вирішити це питання?

З мого розуміння, якщо у мене є 2 веб-сервери, підключення до сервера RDS .. тоді я повинен мати 2 RDS-з'єднання, не більше.


2
"Наскільки я розумію, якщо у мене є підключення 2-х веб-серверів до RDS-сервера .. тоді я повинен мати 2 RDS-з'єднання, не більше." Це неправильне розуміння. Зазвичай це 1 з'єднання на робочий процес або потік.
Майкл - sqlbot

Дякую @ Майкл-sqlbot .. Так, я неправильно розумію це, але я хотів переконатися. Але чому ми маємо 40 з'єднань, що надходять до RDS, він відмовляється від іншого підключення та бути недоступним, поки інші з'єднання не будуть закриті?
Алаа Бадран

Це за конструкцією, від max_connectionsпараметра. У більшості навантажень ви повинні безпечно збільшувати його, оскільки це безпечно консервативне значення за замовчуванням ... але ви захочете дослідити причину цих шипів.
Майкл - sqlbot

Відповіді:


65

Гранична змінна величина AWS RDS max_connections заснована на типі екземпляра, тому ви можете оновити RDS або зробити більше реплік.

Типи RDS з обмеженням max_connections:

  • t2.micro 66
  • t2.small 150
  • m3.medium 296
  • t2.medium 312
  • m3.великий 609
  • t2.великий 648
  • m4.великий 648
  • m3.xlarge 1237
  • r3.великий 1258 рік
  • m4.xlarge 1320
  • м2.більше 1412
  • м3.2більше 2492
  • r3.xlarge 2540

Посилання на max_connections в розмірах екземплярів AWS RDS MySQL у 2015 році

Оновлення 2017-07

Поточний параметр max_connections RDS MySQL за замовчуванням {DBInstanceClassMemory/12582880}, якщо ви використовуєте t2.micro з оперативною пам’яттю 512MB, max_connections може бути (512 * 1024 * 1024) / 12582880 ~ = 40 тощо.


Кожен веб-сервер може мати безліч підключень до RDS, що залежить від ваших запитів SQL від веб-сервера.


Я це знаю, але коли ви досягаєте 40 з'єднань, сервер не відповідає? Перевірте це: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/…
Алаа Бадран

1
Я перевіряю групи параметрів RDS, максимум з'єднань за замовчуванням {DBInstanceClassMemory/12582880}, тому, коли ви використовуєте t2.micro з 512 Мб оперативної пам’яті, (512*1024*1024)/12582880 = 40.69максимум з'єднань може пояснити ваші 40 макс.
Нік Цай

2
Ви можете перевірити значення, запитуючи RDS MySQL з командою show variables like 'max_connections';.
Нік Цай

1
Ви можете створити нове parameter groupі змінити значення max_connections на потрібне значення. Це буде новий ліміт підключення для вашого екземпляра RDS.
зворотний нахилN

1
Ця відповідь дотримується 2019 року. Ви завжди можете перевірити себе, виконуючиSHOW VARIABLES WHERE Variable_name='max_connections'
Дейв Штейн

30

Ви можете змінити max_connectionsзначення, оновивши політику параметрів за замовчуванням або створивши нову - я б запропонував перейти з останньою.

  • Перейдіть до RDS
  • Групи параметрів
  • Створіть нову групу параметрів (AWS залишить усе за замовчуванням)
  • пошук max_connectionsзначення
  • Змініть значення для використання
  • Перейдіть до екземпляра RDS та змініть його
  • Виберіть створену нову групу параметрів та перезапустіть примірник або дозвольте AWS перезавантажити його під час наступного вікна технічного обслуговування

Сподіваюся, це допомагає!


2
<3 це має бути прийнята відповідь
bbozo

2
незважаючи на те, що я встановив max_connections на 1000, rds все ще дозволено лише 100 макс. з'єднань на мікроаптеці
Мігель Мота,

1

Під час збільшення максимальних з’єднань на серверній конфігурації може вирішити проблему, слід розглянути можливість перевірки конфігурацій та реалізацій програми.

Я не фахівець з Magento, але оскільки нещодавно у мене був подібний випуск проекту, над яким я працював, я помітив, що реалізація за замовчуванням рамки, яку я використовував, створювала зв’язок із кожним викликом до бази даних.

Хоча це може не викликати жодних проблем у когось, коли у вас більше відвідувачів або деяких завдань, які мають інтенсивну базу даних і можуть працювати на декількох підключеннях, найкращий спосіб запобігти збоям сервера із помилкою "ТО МНОГО СПОЛУЧЕННЯ" - це впровадження бази даних пул підключення.

Це не дозволяє додатку створювати більше з'єднань, з якими може оброблятись сервер, а не руйнувати додаток для користувачів. Пул з'єднань зберігатиме чергу для запитів на доступ до бази даних, поки з'єднання не стане доступним, щоб воно могло продовжувати обробку запиту користувачів.

Просто майте на увазі, що пул з'єднань повинен бути безпечним для потоків у багатопотоковому сценарії.


1

Увійдіть у свій екземпляр RDS (за допомогою клієнта MySQL) та запустіть наступний запит:

SHOW VARIABLES LIKE 'max_connections';

1

Фактична інформація для Postgresql t3-екземплярів (група параметрів 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

Схожий на default.postgres9 та default.postgres11


0

Це не 40 підключень максимум, тобто 40 екземплярів RDS макс. Ви, швидше за все, використовуєте лише 1 екземпляр на основі вашого опису.

Ви можете мати тисячі підключень до сервера RDS, оскільки кожен раз, коли сеанс відкривається із базою даних, це створює нове з'єднання. Ви, мабуть, стикаєтеся з обмеженнями продуктивності, і вам слід розглянути можливість збільшення екземпляра RDS.


Дякую @jason У мене є така інформація: Коли ви досягаєте 40 з'єднань, RDS не відповідає, поки інші з'єднання не закриваються. У нас є примірник R3.xlarge RDS. Ось скріншот цього: drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/… У нас є непрацездатний процесор з великою кількістю підключень
Alaa Badran

Це зв’язки, не інше
Орландо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.