io/socket/sql/client_connection - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

io/socket/sql/client_connection

当线程正处理新连接时,将发生 io/socket/sql/client_connection 事件。

支持的引擎版本

以下引擎版本支持此等待事件信息:

  • Aurora MySQL 版本 2 和 3

上下文

事件 io/socket/sql/client_connection 表示 mysqld 正忙于创建线程来处理传入的新客户端连接。在这种情况下,在连接等待分配线程的同时,服务新客户端连接请求的处理速度会减慢。有关更多信息,请参阅 MySQL 服务器 (mysqld)

等待次数增加的可能原因

当此事件的发生率超过正常(可能表示性能问题)时,典型原因包括以下几点:

  • 从应用程序到 Amazon RDS 实例的新用户连接突然增加。

  • 由于网络、CPU 或内存受到限制,您的数据库实例无法处理新连接。

操作

如果 io/socket/sql/client_connection 主导着数据库活动,它不一定表示性能问题。在不处于空闲状态的数据库中,等待事件始终处于首位。只有在性能下降时才采取行动。根据等待事件的原因,我们建议采取不同的操作。

识别有问题的会话和查询

如果数据库实例遇到瓶颈,您的首要任务是查找导致瓶颈的会话和查询。有关有用的博客文章,请参阅利用性能详情分析 Amazon Aurora MySQL 工作负载

识别导致瓶颈的会话和查询
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Performance Insights

  3. 选择您的数据库实例。

  4. Database load(数据库负载)中,选择 Slice by wait(按等待切片)。

  5. 在页面底部,选择 Top SQL(主要 SQL)。

    列表顶部的查询导致数据库负载最高。

遵循连接管理的最佳实践

要管理连接,请考虑以下策略:

如果资源受到限制,则纵向扩展实例

在以下资源中查找节流的示例:

  • CPU

    检查您的 Amazon CloudWatch 指标是否存在高 CPU 使用率。

  • 网络

    检查 CloudWatch 指标 network receive throughputnetwork transmit throughput 的值是否增加。如果您的实例已达到实例类的网络带宽限制,请考虑将 RDS 实例纵向扩展到更高的实例类类型。有关更多信息,请参阅 Aurora 数据库实例类

  • 可用内存

    检查 CloudWatch 指标 FreeableMemory 是否有下降。另外,请考虑开启增强监控功能。有关更多信息,请参阅 使用增强监控来监控操作系统指标

检查首要主机和主要用户

使用性能详情查看首要主机和主要用户。有关更多信息,请参阅 使用性能详情控制面板分析指标

查询 performance_schema 表

要获得当前连接和总连接数的准确计数,请查询 performance_schema 表。使用此方法,您可以识别负责创建大量连接的源用户或主机。例如,如下所示查询 performance_schema 表。

SELECT * FROM performance_schema.accounts; SELECT * FROM performance_schema.users; SELECT * FROM performance_schema.hosts;

检查查询的线程状态

如果性能问题仍然存在,请检查查询的线程状态。在 mysql 客户端中,发出以下命令。

show processlist;

审核您的请求和查询

要查看来自用户账户的请求和查询的性质,请使用 AuroraAurora MySQL 高级审核。要了解如何启用审核,请参阅 在 Amazon Aurora MySQL 数据库集群中使用高级审计

池化您的数据库连接

考虑使用 Amazon RDS 代理进行连接管理。通过使用 RDS 代理,您可以允许您的应用程序池化和共享数据库连接,以提高其扩展能力。RDS Proxy 通过在保留应用程序连接的同时自动连接到备用数据库实例,使应用程序能够更好地抵御数据库故障。有关更多信息,请参阅 将 Amazon RDS 代理用于 Aurora