RDS服务器最多提供40个连接,如以下文档中所示,
我正在使用Magento 1.9,在某些时候,我达到了最大连接数,则网站不可用。
您是否有解决此问题的建议方法?
据我了解,如果我有2个Web服务器连接到RDS服务器..则我应该有2个RDS连接,而不是更多。
max_connections
参数设计的。对于大多数工作负载,您应该能够安全地增加它,因为它是一个安全的保守默认值...但是您需要调查造成这些峰值的原因。
RDS服务器最多提供40个连接,如以下文档中所示,
我正在使用Magento 1.9,在某些时候,我达到了最大连接数,则网站不可用。
您是否有解决此问题的建议方法?
据我了解,如果我有2个Web服务器连接到RDS服务器..则我应该有2个RDS连接,而不是更多。
max_connections
参数设计的。对于大多数工作负载,您应该能够安全地增加它,因为它是一个安全的保守默认值...但是您需要调查造成这些峰值的原因。
Answers:
AWS RDS max_connections限制变量基于实例类型,因此您可以升级RDS或制作更多副本。
具有max_connections限制的RDS类型:
通过max_connections在2015年的AWS RDS MySQL实例大小上进行引用
当前的RDS MySQL max_connections设置默认为{DBInstanceClassMemory/12582880}
,如果您使用带有512MB RAM的t2.micro,则max_connections可以是(512 * 1024 * 1024)/ 12582880〜= 40,依此类推。
每个Web服务器可以与RDS建立许多连接,这取决于您从Web服务器发出的SQL请求。
{DBInstanceClassMemory/12582880}
,因此当您将t2.micro与512MB RAM一起使用时,max_connections (512*1024*1024)/12582880 = 40.69
可以解释您的40个最大连接。
show variables like 'max_connections';
。
parameter group
值并将其值更改max_connections
为所需的值。这将是您的RDS实例的新连接限制。
SHOW VARIABLES WHERE Variable_name='max_connections'
您可以max_connections
通过更新默认参数策略或创建新参数策略来更改值-我建议您使用后者。
max_connections
价值希望这可以帮助!
虽然增加服务器配置上的最大连接数可能会解决此问题,但您应考虑验证您的应用程序配置和实现。
我不是Magento的专家,但是由于我最近在一个正在处理的项目中遇到类似的问题,因此我注意到我使用的框架的默认实现会在每次调用数据库时创建一个连接。
虽然这可能不会造成任何问题,但是当您有更多的访问者或某些数据库密集型任务并且可以在多个连接上运行时,防止服务器因“ TOO MANY CONNECTIONS”错误而崩溃的最佳方法是实现数据库连接池。
这样可以防止应用程序创建服务器可以处理的更多连接,并且不会使应用程序崩溃。连接池将为访问数据库的请求保留队列,直到连接可用为止,以便它可以继续处理用户请求。
请记住,在多线程方案中,连接池应该是线程安全的。
登录到您的RDS实例(使用MySQL客户端)并运行以下查询:
SHOW VARIABLES LIKE 'max_connections';
Postgresql t3-instances的实际信息(default.postgres10参数组):
与default.postgres9和default.postgres11类似
最多连接40个连接,最多RDS实例40个。根据您的描述,您很可能仅使用1个实例。
您可以与RDS服务器建立数千个连接,因为每次与数据库打开会话时,都会创建一个新连接。您可能会遇到性能限制,应该考虑使RDS实例更大。