如何增加 Amazon RDS for MySQL 实例的最大连接数?

上次更新日期:2021 年 8 月 27 日

我想要增加 Amazon Relational Database Service (Amazon RDS) for MySQL 实例的最大连接数。我该如何操作,以及使用 max_connections 参数的最佳实践是什么?

解决方法

在 Amazon RDS for MySQL 中,max_connections 指标用于监控设置的最大(允许的)客户端同时连接数。

原定设置下,max_connections 参数基于 Amazon RDS for MySQL 中的以下公式(根据 DBInstanceClassMemory 值计算):

max_connections = DBInstanceClassMemory/12582880

原定设置的 max_connections 值取决于 Amazon RDS 实例使用的实例类。数据库实例类的可用内存越多,支持的数据库连接数就越多。

要检查 max_connections 的当前值,请在连接到 Amazon RDS for MySQL 实例后运行以下命令:

SHOW GLOBAL VARIABLES LIKE 'max_connections';

当您的客户端连接数超过 max_connections 值时,您将收到“连接数过多”错误

以下因素可能导致数据库连接数超过 max_connections 值:

  • 由于工作负载增加或表/行级别锁定,导致与数据库实例的客户端/应用程序连接数增加。
  • 操作结束后不正确地关闭客户端/应用程序连接。当服务器连接未正确关闭时,客户端应用程序将打开新连接。随着时间的推移,这些新的服务器连接可能会导致您的实例超过 max_connections 值。要列出 MySQL 数据库实例中的所有活动连接,请使用 SHOW FULL PROCESSLIST 命令。
  • 休眠连接(也称为非活动开放连接)是由较高的连接超时参数(如 wait _timeoutinteractive_timeout)引起的。如果您配置的连接限制太高,那么即使没有使用这些连接,最终也可能会导致更高的内存使用率。因此,当应用程序服务器尝试打开与数据库的所有客户端连接时,这些连接可能会被拒绝。要终止休眠连接,请使用 mysql.rds_kill 操作。
    提示:最佳实践是仅配置应用程序性能所需的活动连接。您也可以考虑升级到更大的 Amazon RDS 数据库实例类。

增加 Amazon RDS for MySQL 实例的 max_connections 参数

您可以使用以下方法来增加与数据库实例的最大连接数:

  • 将数据库实例扩展到内存更多的数据库实例类。
    警告:修改 Amazon RDS 数据库实例时会发生停机。
  • 使用自定义实例级别参数组为 max_connections 参数设置一个较大值。提高 max_connections 参数不会导致中断。
  • 如果数据库实例使用的是原定设置参数组,则应将参数组更改为自定义参数组。确保将自定义数据库参数组与 Amazon RDS for MySQL 实例相关联,然后重新启动该实例。新的自定义参数组与数据库实例关联后,可以修改 max_connections 参数值。
    注意:更改参数组可能会导致中断。有关更多信息,请参阅使用数据库参数组

要创建自定义参数组并修改 max_connections 参数,请参阅如何修改 Amazon RDS 数据库参数组的值?

配置 max_connections 参数的最佳实践

使用数据库实例的 max_connections 参数时,请务必考虑以下最佳实践:

  • 如果系统对其他主要的内存消耗者(如缓冲池)使用的是原定设置值,则需要调整系统的默认连接限制。最佳实践是纵向扩展实例类,而不是更改实例类的值。但是,如果实例有大量可用内存,则可以手动更改此参数。如果您要更改数据库实例的这些设置,则请考虑调整连接限制以增加或减少数据库实例的可用内存。
  • max_connections 值设置为略高于每个数据库实例上预计打开的最大连接数。
  • 如果您还启用了性能架构,请密切注意 max_connections 参数设置。性能架构内存结构将根据服务器配置变量自动调整大小。您设置的变量越高,性能架构使用的内存就越多。在极端情况下,这可能会导致小型实例类型(如 T2 和 T3)内存不足的问题。如果您使用的是性能架构,则最佳实践是将 max_connections 设置保留为原定设置值。如果您计划大幅增加 max_connections 值(高于原定设置值),则请考虑禁用性能架构。
    注意:如果您为 Amazon RDS for MySQL 数据库实例启用性能详情,则性能架构也会自动启用。
  • 调整 max_connections 参数时,请确保同时查看以下 MySQL 连接相关参数:
    wait_timeout:服务器在关闭非交互式 TCP/IP 或 Unix File 连接之前等待其活动的秒数。
    interactive_timeout:服务器在关闭交互式连接之前等待其活动的秒数。
    net_read_timeout:在丢弃读取之前等待来自 TCP/IP 连接的更多数据的秒数。
    net_write_timeout:在丢弃写入之前等待 TCP/IP 连接写入数据块的秒数。
    max_execution_time:SELECT 语句执行超时时间(单位为毫秒)。
    max_connect_errors:如果连接中断的数量超过该参数,则主机将被阻止继续连接。
    max_user_connections:任何给定 MySQL 账户允许同时连接的最大数量。

注意:本文不提供所列参数的推荐值,因为这些值因使用案例而异。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?