

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# io/socket/sql/client\_connection
<a name="ams-waits.client-connection"></a>

當執行緒正在處理新連線時，`io/socket/sql/client_connection` 事件便會發生。

**Topics**
+ [支援的引擎版本](#ams-waits.client-connection.context.supported)
+ [Context](#ams-waits.client-connection.context)
+ [等待變多的可能原因](#ams-waits.client-connection.causes)
+ [動作](#ams-waits.client-connection.actions)

## 支援的引擎版本
<a name="ams-waits.client-connection.context.supported"></a>

下列引擎版本支援這個等待事件資訊：
+ Aurora MySQL 2 版和 3 版

## Context
<a name="ams-waits.client-connection.context"></a>

事件 `io/socket/sql/client_connection` 指出 mysqld 忙於建立執行緒來處理傳入的新用戶端連線。在此情況中，當連線等待要指派的執行緒時，服務新的用戶端連線請求的處理速度會減慢。如需詳細資訊，請參閱[MySQL 伺服器 (mysqld)](AuroraMySQL.Managing.Tuning.concepts.md#AuroraMySQL.Managing.Tuning.concepts.processes.mysqld)。

## 等待變多的可能原因
<a name="ams-waits.client-connection.causes"></a>

此事件比平時更常出現時，可能表示有效能問題，典型原因包括：
+ 從應用程式到 Amazon RDS 執行個體的新使用者連線突然增加。
+ 您的資料庫執行個體無法處理新連線，因為網路、CPU 或記憶體正在調節。

## 動作
<a name="ams-waits.client-connection.actions"></a>

如果 `io/socket/sql/client_connection` 主導資料庫活動，則不見得表示有效能問題。在不是閒置的資料庫中，等待事件始終位於頂端。只有在效能降低時才採取行動。根據等待事件的原因，我們會建議不同的動作。

**Topics**
+ [識別有問題的工作階段和查詢](#ams-waits.client-connection.actions.identify-queries)
+ [遵循連線管理的最佳實務](#ams-waits.client-connection.actions.manage-connections)
+ [如果資源正在調節，請擴展執行個體](#ams-waits.client-connection.upgrade)
+ [檢查最高主機和最高使用者](#ams-waits.client-connection.top-hosts)
+ [查詢 performance\_schema 資料表](#ams-waits.client-connection.perf-schema)
+ [檢查查詢的執行緒狀態](#ams-waits.client-connection.thread-states)
+ [稽核請求和查詢](#ams-waits.client-connection.auditing)
+ [集中資料庫連線](#ams-waits.client-connection.pooling)

### 識別有問題的工作階段和查詢
<a name="ams-waits.client-connection.actions.identify-queries"></a>

如果您的資料庫執行個體遭遇瓶頸，您的第一項任務是尋找造成瓶頸的工作階段和查詢。如需實用的部落格文章，請參閱[利用績效詳情分析 Amazon Aurora MySQL 工作負載](https://aws.amazon.com/blogs/database/analyze-amazon-aurora-mysql-workloads-with-performance-insights/)。

**識別造成瓶頸的工作階段和查詢**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Performance Insights** (績效詳情)。

1. 選擇資料庫執行個體。

1. 在 **Database load** (資料庫負載) 中，選擇 **Slice by wait** (依等待建立配量)。

1. 在頁面底端，選擇 **Top SQL** (最高 SQL)。

   清單頂端的查詢對資料庫造成最高負載。

### 遵循連線管理的最佳實務
<a name="ams-waits.client-connection.actions.manage-connections"></a>

若要管理連線，請考慮下列策略：
+ 使用連線集區

  您可以視需要逐漸增加連線數量。如需詳細資訊，請參閱白皮書 [Amazon Aurora MySQL 資料庫管理員手冊](https://d1.awsstatic.com/whitepapers/RDS/amazon-aurora-mysql-database-administrator-handbook.pdf)。
+ 使用讀取器節點重新分配唯讀流量。

  如需更多詳細資訊，請參閱 [Aurora 複本](Aurora.Replication.md#Aurora.Replication.Replicas)及 [Amazon Aurora 端點連線](Aurora.Overview.Endpoints.md)。

### 如果資源正在調節，請擴展執行個體
<a name="ams-waits.client-connection.upgrade"></a>

在下列資源中尋找調節的範例：
+ CPU

  檢查 Amazon CloudWatch 指標是否有高 CPU 使用率。
+ 網路

  檢查 CloudWatch 指標 `network receive throughput` 和 `network transmit throughput` 的值是否增加。如果您的執行個體已達到執行個體類別的網路頻寬限制，請考慮將 RDS 執行個體擴展到更高的執行個體類別類型。如需詳細資訊，請參閱[Amazon Aurora 資料庫執行個體類別](Concepts.DBInstanceClass.md)。
+ 可用記憶體 

  檢查 CloudWatch 指標 `FreeableMemory` 是否下降。此外，請考慮開啟增強型監控。如需詳細資訊，請參閱[使用增強型監控來監控作業系統指標](USER_Monitoring.OS.md)。

### 檢查最高主機和最高使用者
<a name="ams-waits.client-connection.top-hosts"></a>

使用績效詳情來檢查最高主機和最高使用者。如需詳細資訊，請參閱[使用績效詳情儀表板來分析指標](USER_PerfInsights.UsingDashboard.md)。

### 查詢 performance\_schema 資料表
<a name="ams-waits.client-connection.perf-schema"></a>

若要取得目前和總連線的準確計數，請查詢 `performance_schema` 資料表。使用此技術，您可以識別負責建立大量連線的來源使用者或主機。例如，查詢 `performance_schema` 資料表，如下所示。

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

### 檢查查詢的執行緒狀態
<a name="ams-waits.client-connection.thread-states"></a>

如果效能問題持續發生，請檢查查詢的執行緒狀態。在 `mysql` 用戶端中，發出下列命令。

```
show processlist;
```

### 稽核請求和查詢
<a name="ams-waits.client-connection.auditing"></a>

若要從使用者帳戶檢查請求和查詢的性質，請使用 Aurora MySQL 進階稽核。若要了解如何開啟稽核，請參閱[使用進階稽核與 Amazon Aurora MySQL 資料庫叢集搭配](AuroraMySQL.Auditing.md)。

### 集中資料庫連線
<a name="ams-waits.client-connection.pooling"></a>

考慮使用 Amazon RDS Proxy 進行連線管理。透過使用 RDS Proxy，您可以允許應用程式集中和共用資料庫連線，以改善其擴展能力。RDS Proxy 會自動連線至待命資料庫執行個體，同時保留應用程式連線，使應用程式更具有資料庫故障彈性。如需詳細資訊，請參閱[Amazon RDS Proxy for Aurora](rds-proxy.md)。