AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 862387
Accepted
Alaa Badran
Alaa Badran
Asked: 2017-07-17 00:59:11 +0800 CST2017-07-17 00:59:11 +0800 CST 2017-07-17 00:59:11 +0800 CST

AWS RDS 连接限制

  • 772

RDS 服务器最多提供 40 个连接,如以下文档
所示,我使用的是 Magento 1.9,在某些时候,我达到了最大连接数,然后网站停止服务。
你有什么推荐的方法来解决这个问题吗?

据我了解,如果我有 2 个 Web 服务器连接到 RDS 服务器..那么我应该有 2 个 RDS 连接,而不是更多。

amazon-web-services
  • 8 8 个回答
  • 196782 Views

8 个回答

  • Voted
  1. Best Answer
    Nick Tsai
    2017-07-17T06:55:04+08:002017-07-17T06:55:04+08:00

    AWS RDS max_connections 限制变量基于实例类型,因此您可以升级 RDS 或制作更多副本。

    具有 max_connections 限制的 RDS 类型:

    • t2.micro 66
    • t2.小150
    • m3.medium 296
    • t2.中 312
    • m3.大 609
    • t2.大 648
    • m4.大 648
    • m3.xlarge 1237
    • r3.大 1258
    • m4.xlarge 1320
    • m2.xlarge 1412
    • m3.2xlarge 2492
    • r3.xlarge 2540

    2015 年AWS RDS MySQL 实例大小的 max_connections参考

    2017-07 更新

    当前 RDS MySQL 的 max_connections 设置默认为{DBInstanceClassMemory/12582880},如果您使用t2.micro和 512MB RAM,则 max_connections 可能是 (512*1024*1024)/12582880 ~= 40,依此类推。


    每个 Web 服务器可以有许多到 RDS 的连接,这取决于您从 Web 服务器发出的 SQL 请求。

    • 109
  2. David
    2017-11-02T10:10:00+08:002017-11-02T10:10:00+08:00

    您可以max_connections通过更新默认参数策略或创建一个新策略来更改该值 - 我建议使用后者。

    • 前往 RDS
    • 参数组
    • 创建一个新的参数组(AWS 会将所有内容保留为默认值)
    • 搜索max_connections值
    • 更改要使用的值
    • 转到RDS实例并修改
    • 选择创建的新参数组并重新启动实例或让 AWS 在下一个维护时段重新启动它

    希望这可以帮助!

    • 53
  3. anton.uspehov
    2019-09-07T01:51:46+08:002019-09-07T01:51:46+08:00

    Postgresql t3-instances 的实际信息(default.postgres10 参数组):

    • db.t3.micro - 112 最大连接数
    • db.t3.small - 225 最大连接数
    • db.t3.medium - 450 最大连接数
    • db.t3.large - 901 最大连接数
    • db.t3.xlarge - 1802 最大连接数
    • db.t3.2xlarge - 3604 最大连接数

    default.postgres9 和 default.postgres11 类似

    • 14
  4. Shammi Shailaj
    2018-09-05T08:36:27+08:002018-09-05T08:36:27+08:00

    登录到您的 RDS 实例(使用 MySQL 客户端)并运行以下查询:

    SHOW VARIABLES LIKE 'max_connections';
    
    • 8
  5. Sergii Mostovyi
    2020-04-18T01:12:52+08:002020-04-18T01:12:52+08:00

    最大同时数据库连接数因数据库引擎类型和数据库实例类的内存分配而异。最大连接数在与数据库实例关联的参数组中设置,Microsoft SQL Server 除外,它在 SQL Server Managment Studio (SSMS) 中数据库实例的服务器属性中设置。

    玛丽亚数据库/MySQL {DBInstanceClassMemory/12582880}

    甲骨文 LEAST({DBInstanceClassMemory/9868951}, 20000)

    PostgreSQL LEAST({DBInstanceClassMemory/9531392}, 5000)

    SQL 服务器 0 (unlimited)

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

    • 3
  6. Uriel Bertoche
    2018-08-22T06:24:07+08:002018-08-22T06:24:07+08:00

    虽然增加服务器配置的最大连接数可能会解决问题,但您应该考虑验证您的应用程序配置和实现。

    我不是 Magento 方面的专家,但由于我最近在我正在处理的项目中遇到了类似的问题,我注意到我使用的框架的默认实现创建了与每次调用数据库的连接。

    虽然这可能不会对某些人造成任何问题,但当您有更多访问者或一些数据库密集型任务并且可以在多个连接上运行时,防止服务器因“TOO MANY CONNECTIONS”错误而崩溃的最佳方法是实现数据库连接池。

    这可以防止应用程序创建更多服务器可以处理的连接,并且不会使应用程序崩溃给用户。连接池将为访问数据库的请求保留一个队列,直到连接可用,以便它可以继续处理用户请求。

    请记住,连接池在多线程场景中应该是线程安全的。

    • 2
  7. jason s
    2017-07-17T06:00:25+08:002017-07-17T06:00:25+08:00

    这不是最多 40 个连接,而是最多 40 个 RDS 实例。根据您的描述,您很可能只使用 1 个实例。

    您可以与 RDS 服务器建立数千个连接,因为每次打开与数据库的会话时,都会创建一个新连接。您可能遇到了性能限制,应该考虑使 RDS 实例更大。

    • 1
  8. Lukas Liesis
    2021-11-26T01:56:00+08:002021-11-26T01:56:00+08:00

    似乎是 ~45 个连接/2gb 内存

    我看到了公式,检查了我的配置,默认情况下它有更复杂的 max_connections 公式,并且很难计算真正的限制,所以以简单的方式进行 - 刚刚测试。接近极限时,监控仪表板显示红线。检查下面。

    db.t3.small(2gb ram)来自监控控制台的图表,如您所见,它显示最大连接数±46,瞬间越过红线的峰值为 47

    在此处输入图像描述

    现在升级到 2x 更大的实例db.t3.medium(4gb ram),我预计每 2gb ram 可以获得额外的 45,这似乎是真的。使用 4gb 盒子可以看到接近约 90 个连接的红线:

    在此处输入图像描述

    • 1

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve