El servidor RDS tiene un máximo de 40 conexiones, ya que en la siguiente documentación
estoy usando Magento 1.9, y en algunos puntos, alcanzo el número máximo y el sitio web está fuera de servicio.
¿Tiene alguna forma recomendada para resolver este problema?
Según tengo entendido, si tengo una conexión de 2 servidores web a un servidor RDS ... entonces debería tener 2 conexiones RDS, no más.
amazon-web-services
database
rds
amazon-rds
Alaa Badran
fuente
fuente
max_connections
parámetro. Para la mayoría de las cargas de trabajo, debería poder aumentarlo de manera segura, porque es un valor predeterminado conservador ... pero querrá investigar la causa de esos picos.Respuestas:
La variable de límite de AWS RDS max_connections se basa en el tipo de instancia, por lo que puede actualizar su RDS o hacer más réplicas.
Los tipos RDS con límite de max_ connections:
Actualización 2017-07
La configuración actual de RDS MySQL max_ connections es predeterminada
{DBInstanceClassMemory/12582880}
, si usa t2.micro con 512 MB de RAM, max_ connections podría ser (512 * 1024 * 1024) / 12582880 ~ = 40, y así sucesivamente.Cada servidor web podría tener muchas conexiones a RDS, lo que depende de sus solicitudes SQL del servidor web.
fuente
{DBInstanceClassMemory/12582880}
max_ connections es el predeterminado , por lo que cuando usa t2.micro con 512 MB de RAM, el max_ connections podría ser lo(512*1024*1024)/12582880 = 40.69
que podría explicar sus 40 conexiones máximas.show variables like 'max_connections';
.parameter group
y cambiar el valor demax_connections
al valor que desee. Este será el nuevo límite de conexión para su instancia de RDS.SHOW VARIABLES WHERE Variable_name='max_connections'
Puede cambiar el
max_connections
valor actualizando la política de parámetros predeterminada o creando una nueva; sugeriría ir con la última.max_connections
valor¡Espero que esto ayude!
fuente
Si bien aumentar las conexiones máximas en la configuración del servidor puede solucionar el problema, debe considerar verificar las configuraciones e implementaciones de su aplicación.
No soy un experto en Magento, pero como recientemente tuve un problema similar en un proyecto en el que estaba trabajando, noté que la implementación predeterminada del marco que estaba usando creaba una conexión con cada llamada a la base de datos.
Si bien eso puede no causar ningún problema a algunos, en el momento en que tiene más visitantes o algunas tareas que requieren una gran cantidad de bases de datos y pueden ejecutarse en múltiples conexiones, la mejor manera de evitar que el servidor se bloquee con el error "DEMASIADAS CONEXIONES" es implementar una base de datos Piscina de conexión.
Esto evita que la aplicación cree más conexiones que el servidor pueda manejar y no bloquee la aplicación para los usuarios. Un grupo de conexiones mantendría una cola para las solicitudes de acceso a la base de datos hasta que una conexión esté disponible para que pueda continuar con el procesamiento de la solicitud de los usuarios.
Solo tenga en cuenta que el grupo de conexiones debe ser seguro para subprocesos en un escenario de subprocesos múltiples.
fuente
Inicie sesión en su instancia de RDS (utilizando un cliente MySQL) y ejecute la siguiente consulta:
fuente
Información real para instancias t3 de Postgresql (grupo de parámetros default.postgres10):
Es similar para default.postgres9 y default.postgres11
fuente
No son 40 conexiones como máximo, son 40 instancias RDS como máximo. Lo más probable es que solo use 1 instancia según su descripción.
Puede tener miles de conexiones con el servidor RDS porque cada vez que se abre una sesión con la base de datos, se crea una nueva conexión. Probablemente se encuentre con limitaciones de rendimiento y debería considerar aumentar la instancia de RDS.
fuente