

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

# io/aurora\_respond\_to\_client
<a name="ams-waits.respond-to-client"></a>

當執行緒正在等待將結果集傳回至用戶端時，`io/aurora_respond_to_client` 事件便會發生。

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

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

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

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

事件 `io/aurora_respond_to_client` 指出執行緒正在等待將結果集傳回至用戶端時。

查詢處理完成，且結果會傳回至應用程式用戶端。不過，由於資料庫叢集上沒有足夠的網路頻寬，因此執行緒正在等待傳回結果集。

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

`io/aurora_respond_to_client` 事件比平時更常出現時，可能表示有效能問題，典型原因包括：

**資料庫執行個體類別不足以處理工作負載**  
資料庫叢集所使用的資料庫執行個體類別沒有必要的網路頻寬來有效處理工作負載。

**大型結果集**  
傳回的結果集大小增加，因為查詢傳回大量的資料列。結果集越大，耗用的網路頻寬就越多。

**用戶端的負載增加**  
用戶端可能面臨 CPU 壓力、記憶體壓力或網路飽和。用戶端的負載增加會延遲從 Aurora MySQL 資料庫叢集接收資料。

**網路延遲較久**  
Aurora MySQL 資料庫叢集與用戶端之間的網路延遲可能變長。網路延遲越久會導致用戶端需要更多時間來接收資料。

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

根據等待事件的原因，我們會建議不同的動作。

**Topics**
+ [識別造成事件的工作階段和查詢](#ams-waits.respond-to-client.actions.identify)
+ [擴展資料庫執行個體類別](#ams-waits.respond-to-client.actions.scale-db-instance-class)
+ [檢查工作負載是否有非預期結果](#ams-waits.respond-to-client.actions.workload)
+ [使用讀取器執行個體分配工作負載](#ams-waits.respond-to-client.actions.balance)
+ [使用 SQL\_BUFFER\_RESULT 修飾詞](#ams-waits.respond-to-client.actions.sql-buffer-result)

### 識別造成事件的工作階段和查詢
<a name="ams-waits.respond-to-client.actions.identify"></a>

您可以使用績效詳情來顯示 `io/aurora_respond_to_client` 等待事件所封鎖的查詢。通常，具有中等至重大負載的資料庫會有等待事件。如果效能是最佳的，則等待事件可能是可以接受的。如果效能不是最佳的，則檢查資料庫在何處花費最多時間。查看造成最高負載的等待事件，並了解您是否可以最佳化資料庫和應用程式，以減少這些事件。

**尋找負責高負載的 SQL 查詢**

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)。

   此圖表會列出負責負載的 SQL 查詢。位於清單頂端者負最大責任。若要解決瓶頸，請專注於這些陳述式。

如需使用績效詳情進行故障診斷的實用概觀，請參閱 AWS 資料庫部落格文章[使用績效詳情分析 Amazon Aurora MySQL 工作負載](https://aws.amazon.com/blogs/database/analyze-amazon-aurora-mysql-workloads-with-performance-insights/)。

### 擴展資料庫執行個體類別
<a name="ams-waits.respond-to-client.actions.scale-db-instance-class"></a>

檢查與網路輸送量 (例如 `NetworkReceiveThroughput` 和 `NetworkTransmitThroughput`) 相關的 Amazon CloudWatch 指標值是否增加。如果達到資料庫執行個體類別的網路頻寬，您可以修改資料庫叢集來擴展資料庫叢集所使用的資料庫執行個體。具有較大網路頻寬的資料庫執行個體類別可更有效率地將資料傳回至用戶端

如需監控 Amazon CloudWatch 指標的相關資訊，請參閱[在 Amazon RDS 主控台中檢視指標](USER_Monitoring.md)。如需資料庫執行個體類別的相關資訊，請參閱 [Amazon Aurora 資料庫執行個體類別](Concepts.DBInstanceClass.md)。如需修改資料庫叢集的詳細資訊，請參閱 [修改 Amazon Aurora 資料庫叢集](Aurora.Modifying.md)。

### 檢查工作負載是否有非預期結果
<a name="ams-waits.respond-to-client.actions.workload"></a>

檢查資料庫叢集上的工作負載，並確定它不會產生非預期的結果。例如，可能有查詢傳回比預期還要多的資料列。在此情況下，您可以使用績效詳情計數器指標，例如 `Innodb_rows_read`。如需詳細資訊，請參閱[Performance Insights 計數器指標](USER_PerfInsights_Counters.md)。

### 使用讀取器執行個體分配工作負載
<a name="ams-waits.respond-to-client.actions.balance"></a>

您可以使用 Aurora 複本分配唯讀工作負載。您可以新增更多的 Aurora 複本來水平擴展。這樣做可能會提高網路頻寬的調節限制。如需詳細資訊，請參閱[Amazon Aurora 資料庫叢集](Aurora.Overview.md)。

### 使用 SQL\_BUFFER\_RESULT 修飾詞
<a name="ams-waits.respond-to-client.actions.sql-buffer-result"></a>

您可以將 `SQL_BUFFER_RESULT` 修飾詞新增至 `SELECT` 陳述式，在將結果傳回至用戶端之前，強制將這些結果放入暫時資料表中。當 InnoDB 鎖定由於查詢處於 `io/aurora_respond_to_client` 等待狀態而未釋放時，此修飾詞可以協助解決效能問題。如需詳細資訊，請參閱 MySQL 文件中的 [SELECT PROFILE 陳述式](https://dev.mysql.com/doc/refman/5.7/en/select.html)。