Назад | Перейти на главную страницу

Ограничения на подключение AWS RDS

Сервер RDS предлагает до 40 подключений, как в следующая документация
Я использую Magento 1.9, и в некоторые моменты я достигаю максимального числа, и веб-сайт не работает.
У вас есть рекомендуемый способ решения этой проблемы?

Насколько я понимаю, если у меня есть подключение 2 веб-серверов к серверу RDS ... тогда у меня должно быть 2 подключения RDS, не более.

Переменная предела max_connections AWS RDS зависит от типа инстанса, поэтому вы можете обновить RDS или создать дополнительные реплики.

Типы RDS с ограничением max_connections:

  • t2.micro 66
  • t2.small 150
  • m3.medium 296
  • t2.medium 312
  • m3.large 609
  • t2.large 648
  • м4. большая 648
  • m3.xlarge 1237
  • r3.large 1258
  • m4.xlarge 1320
  • m2.xlarge 1412
  • m3.2xlarge 2492
  • r3.xlarge 2540

Ссылаясь на max_connections при размерах инстансов MySQL AWS RDS в 2015 году

Обновление 2017-07

Текущая настройка max_connections RDS MySQL по умолчанию {DBInstanceClassMemory/12582880}, если вы используете t2.micro с 512 МБ ОЗУ max_connections может быть (512 * 1024 * 1024) / 12582880 ~ = 40 и так далее.


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

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

  • Перейти к RDS
  • Группы параметров
  • Создайте новую группу параметров (AWS оставит все по умолчанию)
  • искать max_connections стоимость
  • Измените значение для использования
  • Перейдите к экземпляру RDS и измените
  • Выберите новую созданную группу параметров и перезапустите экземпляр или позвольте AWS перезагрузить его во время следующего периода обслуживания.

Надеюсь это поможет!

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

Войдите в свой экземпляр RDS (используя клиент MySQL) и выполните следующий запрос:

SHOW VARIABLES LIKE 'max_connections';

Хотя увеличение максимального количества подключений в конфигурации сервера может решить проблему, вам следует подумать о проверке конфигураций и реализаций вашего приложения.

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

Хотя для некоторых это может не вызвать никаких проблем, но в тот момент, когда у вас будет больше посетителей или некоторые задачи, которые требуют интенсивного использования базы данных и могут выполняться при нескольких подключениях, лучший способ предотвратить сбой сервера с ошибкой «СЛИШКОМ МНОГО СОЕДИНЕНИЙ» - это реализовать базу данных. пул соединений.

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

Просто имейте в виду, что пул соединений должен быть потокобезопасным в многопоточном сценарии.

Максимальное количество одновременных подключений к базе данных зависит от типа механизма БД и распределения памяти для класса экземпляра БД. Максимальное количество подключений задается в группе параметров, связанной с экземпляром БД, за исключением Microsoft SQL Server, где оно задается в свойствах сервера для экземпляра БД в SQL Server Managment Studio (SSMS).

MariaDB / MySQL {DBInstanceClassMemory/12582880}

Oracle LEAST({DBInstanceClassMemory/9868951}, 20000)

PostgreSQL LEAST({DBInstanceClassMemory/9531392}, 5000)

SQL Server 0 (unlimited)

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections

Это не максимум 40 подключений, это максимум 40 экземпляров RDS. Скорее всего, вы используете только 1 экземпляр на основе вашего описания.

У вас могут быть тысячи подключений к серверу RDS, потому что каждый раз, когда открывается сеанс с базой данных, создается новое подключение. Вероятно, вы столкнулись с ограничениями производительности и должны рассмотреть возможность увеличения экземпляра RDS.