AWS RDS DB 连接数 90+

AWS RDS DB 连接数 90+

我的 aws 设置中有一个 db.m5.large RDS 实例正在运行。当我从 mysql 控制台检查最大连接数时,使用以下查询。

mysql> show variables like 'max_connections';                                                                                                         
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 624   |
+-----------------+-------+

因此我假设它可以处理 624 个连接。

当我使用下面的查询检查最大使用连接数时。

mysql> SHOW STATUS WHERE `variable_name` = 'Max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 99    |
+----------------------+-------+

我假设有 99 个活动连接,其余的是空闲的。

但是,我的 AWS 警报系统和 RDS 监控系统显示它占用了 90 多个数据库连接。但与此同时我的 RDS CPU 消耗只有 8%。这个警报/监控只是数字还是平均最大连接数?

我有点担心这一点,我的服务器可能会在一段时间后达到最大连接数(100)后停止。

有人能告诉/解释一下吗

  1. 如何检查实际可用的最大连接数和当前连接数。
  2. 度量指标是什么意思?(仅当前连接数还是平均连接数?)
  3. 该如何克服这个问题?
    1. 如果我想增加最大连接数,我该怎么做?
    2. 我是否需要减少应用程序端的连接?

答案1

max_connections = 624说会允许那么多连接。它可能无法同时处理那么多连接。

Max_used_connections = 99意思是有些时候自启动以来,共有 99 个连接。但是,它们可能一直处于空闲状态,等待应用程序(或用户)发出查询。

Threads_running是当前实际正在执行某项操作的连接数的瞬时计数。几十个连接数对此来说是一个“高”数字。但是,这是一个短暂的计数,因此监视它带来的干扰大于实用性。

运行良好的 MySQL 服务器将仅使用 8% 的 CPU(或远低于 100% 的数字)。

一般来说,你应该尝试减少来自应用程序端的连接。这可以通过以下方式实现

  • 让应用程序在完成后断开连接
  • 较低wait_timeout——用于引导无法断开的连接。
  • 减少max_connections——但幅度相当大
  • 减少应用程序启动的“线程”数量(或其他)。例如,这可以在 Apache 中配置。

您提出的各种指标都不是“可操作的”,所以我不会尝试编造如何衡量它们。

如果你的应用运行缓慢,是查看的线索。slowlog 是我的“首选”位置 —— 它不仅指出存在问题,还指出哪个查询是“最差的”(在使用一些摘要之后)。

如果你想回顾数百个VARIABLESGLOBAL STATUS请参阅我需要的信息。大约有 200潜在的它寻找的危险信号。

相关内容