Сервер RDS предлагает до 40 подключений, как в следующая документация
Я использую Magento 1.9, и в некоторые моменты я достигаю максимального числа, и веб-сайт не работает.
У вас есть рекомендуемый способ решения этой проблемы?
Насколько я понимаю, если у меня есть подключение 2 веб-серверов к серверу RDS ... тогда у меня должно быть 2 подключения RDS, не более.
Переменная предела max_connections AWS RDS зависит от типа инстанса, поэтому вы можете обновить RDS или создать дополнительные реплики.
Типы RDS с ограничением max_connections:
Ссылаясь на max_connections при размерах инстансов MySQL AWS RDS в 2015 году
Текущая настройка max_connections RDS MySQL по умолчанию {DBInstanceClassMemory/12582880}
, если вы используете t2.micro с 512 МБ ОЗУ max_connections может быть (512 * 1024 * 1024) / 12582880 ~ = 40 и так далее.
Каждый веб-сервер может иметь множество подключений к RDS, что зависит от ваших запросов SQL от веб-сервера.
Вы можете изменить max_connections
value, обновив политику параметров по умолчанию или создав новую - я бы посоветовал использовать последнее.
max_connections
стоимостьНадеюсь это поможет!
Актуальная информация для t3-экземпляров Postgresql (группа параметров default.postgres10):
Аналогично 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.