

# 监控 Aurora PostgreSQL 中的本地写入转发
<a name="aurora-postgresql-write-forwarding-monitoring"></a>

使用以下部分，您可以监控 Aurora PostgreSQL 集群中的本地写入转发（包括相关的 CloudWatch 指标和等待事件），以跟踪性能并识别潜在问题。

## 用于写入转发的 Amazon CloudWatch 指标和 Aurora PostgreSQL 状态变量
<a name="aurora-postgresql-write-forwarding-cloudwatch"></a>

 在一个或多个只读副本上使用写入转发时，以下 Amazon CloudWatch 指标适用于写入器数据库实例。


| CloudWatch 指标 | 单位和描述 | 
| --- | --- | 
| `AuroraLocalForwardingWriterDMLThroughput` | 计数（每秒）。此写入器数据库实例每秒处理的转发 DML 语句数。 | 
| `AuroraLocalForwardingWriterOpenSessions` | 计数。此写入器数据库实例上处理转发查询的打开会话数。 | 
| `AuroraLocalForwardingWriterTotalSessions` | 计数。此写入器数据库实例上的转发会话总数。 | 

 以下 CloudWatch 指标适用于每个只读副本。这些指标在启用了本地写入转发的数据库集群中的每个读取器数据库实例上进行测量。


| CloudWatch 指标 | 单位和描述 | 
| --- | --- | 
| `AuroraForwardingReplicaCommitThroughput` |  计数（每秒）。此副本每秒转发的会话中的提交数。 | 
| `AuroraForwardingReplicaDMLLatency` |  毫秒。副本上转发 DML 的平均响应时间（以毫秒为单位）。 | 
| `AuroraForwardingReplicaDMLThroughput` |  计数（每秒）。此副本每秒处理的转发 DML 语句数。 | 
| `AuroraForwardingReplicaErrorSessionsLimit` |  计数。由于达到最大连接数或最大写入转发连接数限制而被写入器数据库实例拒绝的会话数。 | 
| `AuroraForwardingReplicaOpenSessions` |  计数。在副本实例上使用本地写入转发的会话数。 | 
| `AuroraForwardingReplicaReadWaitLatency` | 毫秒。副本等待与写入器数据库实例 LSN 一致的平均等待时间（以毫秒为单位）。读取器数据库实例等待的程度取决于 apg\_write\_forward.consistency\_mode 设置。有关该设置的信息，请参阅 [Aurora PostgreSQL 中写入转发的配置参数](aurora-global-database-write-forwarding-apg.md#aurora-global-database-write-forwarding-params-apg)。 | 

## 在 Aurora PostgreSQL 中使用本地写入转发的等待事件
<a name="aurora-postgresql-write-forwarding-wait-events-apg"></a>

当您在 Aurora PostgreSQL 中使用写入转发时，Amazon Aurora 会生成以下等待事件。

**Topics**
+ [IPC:AuroraWriteForwardConnect](#apg-waits.ipcaurorawriteforwardconnect)
+ [IPC:AuroraWriteForwardConsistencyPoint](#apg-waits.ipcaurorawriteforwardconsistencypoint)
+ [IPC:AuroraWriteForwardExecute](#apg-waits.ipc:aurorawriteforwardexecute)
+ [IPC:AuroraWriteForwardGetGlobalConsistencyPoint](#apg-waits.ipc:aurorawriteforwardgetglobalconsistencypoint)
+ [IPC:AuroraWriteForwardXactAbort](#apg-waits.ipc:aurorawriteforwardxactabort)
+ [IPC:AuroraWriteForwardXactCommit](#apg-waits.ipc:aurorawriteforwardxactcommit)
+ [IPC:AuroraWriteForwardXactStart](#apg-waits.ipc:aurorawriteforwardxactstart)

### IPC:AuroraWriteForwardConnect
<a name="apg-waits.ipcaurorawriteforwardconnect"></a>

当只读副本上的后端进程在等待开启与写入器数据库实例的连接时，就会发生该 `IPC:AuroraWriteForwardConnect` 事件。

**等待次数增加的可能原因**

随着尝试从只读副本连接到写入器节点的次数不断增加，此事件也会增加。

**操作**

减少从只读副本到写入器节点的同时连接数量。

### IPC:AuroraWriteForwardConsistencyPoint
<a name="apg-waits.ipcaurorawriteforwardconsistencypoint"></a>

该 `IPC:AuroraWriteForwardConsistencyPoint` 事件描述在将转发写入操作的结果复制到当前区域之前，来自只读副本上节点的查询将等待的时间。仅当会话级别的参数 `apg_write_forward.consistency_mode` 设置为以下项之一时，才会生成此事件：
+ `SESSION` – 只读副本上的查询等待在该会话中所做的所有更改的结果。
+ `GLOBAL` – 只读副本上的查询等待该会话所做更改的结果，以及写入器数据库实例和只读副本中已提交的所有更改的结果。

有关 `apg_write_forward.consistency_mode` 参数设置的更多信息，请参阅 [Aurora PostgreSQL 中写入转发的配置参数](aurora-global-database-write-forwarding-apg.md#aurora-global-database-write-forwarding-params-apg)。

**等待次数增加的可能原因**

等待时间较长的常见原因包括以下几点：
+ 副本滞后延长，如 Amazon CloudWatch `ReplicaLag` 指标所衡量。有关该指标的更多信息，请参阅[监控 Aurora PostgreSQL 复制](AuroraPostgreSQL.Replication.md#AuroraPostgreSQL.Replication.Monitoring)。
+ 写入器数据库实例或只读副本的负载增加。

**操作**

根据应用程序的要求更改一致性模式。

### IPC:AuroraWriteForwardExecute
<a name="apg-waits.ipc:aurorawriteforwardexecute"></a>

当只读副本上的后端进程在等待转发查询完成并从数据库集群写入器节点获取结果时，就会发生该 `IPC:AuroraWriteForwardExecute` 事件。

**等待次数增加的可能原因**

等待次数增加的常见原因包括以下几点：
+ 从写入器节点获取大量行。
+ 写入器节点和只读副本之间的网络延迟增加会增加只读副本从写入器节点获得数据所花费的时间。
+ 只读副本的负载增加可能会延迟从只读副本向写入器节点传输查询请求的时间。
+ 写入器节点负载的增加可能会延迟从写入器节点向只读副本传输数据的时间。

**操作**

根据等待事件的原因，我们建议采取不同的操作。
+ 优化查询以仅检索必要的数据。
+ 优化数据操纵语言（DML）操作，使其仅修改必要数据。
+ 如果只读副本或写入器节点受到 CPU 或网络带宽的限制，请考虑将其更改为具有更大 CPU 容量或更多网络带宽的实例类型。

### IPC:AuroraWriteForwardGetGlobalConsistencyPoint
<a name="apg-waits.ipc:aurorawriteforwardgetglobalconsistencypoint"></a>

当使用 GLOBAL 一致性模式的只读副本上的后端进程在执行查询之前等待从写入器节点获取全局一致性点时，就会发生该 `IPC:AuroraWriteForwardGetGlobalConsistencyPoint` 事件。

**等待次数增加的可能原因**

等待次数增加的常见原因包括以下几点：
+ 只读副本和写入器节点之间的网络延迟增加会增加只读副本从写入器节点获得数据所花费的时间。
+ 只读副本的负载增加可能会延迟从只读副本向写入器节点传输查询请求的时间。
+ 写入器节点负载的增加可能会延迟从写入器节点向只读副本传输数据的时间。

**操作**

根据等待事件的原因，我们建议采取不同的操作。
+ 根据应用程序的要求更改一致性模式。
+ 如果只读副本或写入器节点受到 CPU 或网络带宽的限制，请考虑将其更改为具有更大 CPU 容量或更多网络带宽的实例类型。

### IPC:AuroraWriteForwardXactAbort
<a name="apg-waits.ipc:aurorawriteforwardxactabort"></a>

当只读副本上的后端进程在等待远程清理查询的结果时，就会发生该 `IPC:AuroraWriteForwardXactAbort` 事件。在写入转发的事务中止后，会发出清理查询，以将进程恢复到适当的状态。Amazon Aurora 之所以执行这些操作，要么是因为发现了错误，要么是因为用户发出了明确的 `ABORT` 命令或取消了正在运行的查询。

**等待次数增加的可能原因**

等待次数增加的常见原因包括以下几点：
+ 只读副本和写入器节点之间的网络延迟增加会增加只读副本从写入器节点获得数据所花费的时间。
+ 只读副本的负载增加可能会延迟从只读副本向写入器节点传输清理查询请求的时间。
+ 写入器节点负载的增加可能会延迟从写入器节点向只读副本传输数据的时间。

**操作**

根据等待事件的原因，我们建议采取不同的操作。
+ 调查事务中止的原因。
+ 如果只读副本或写入器数据库实例受到 CPU 或网络带宽的限制，请考虑将其更改为具有更大 CPU 容量或更多网络带宽的实例类型。

### IPC:AuroraWriteForwardXactCommit
<a name="apg-waits.ipc:aurorawriteforwardxactcommit"></a>

当只读副本上的后端进程在等待转发提交事务命令的结果时，就会发生该 `IPC:AuroraWriteForwardXactCommit` 事件。

**等待次数增加的可能原因**

等待次数增加的常见原因包括以下几点：
+ 只读副本和写入器节点之间的网络延迟增加会增加只读副本从写入器节点获得数据所花费的时间。
+ 只读副本的负载增加可能会延迟从只读副本向写入器节点传输查询请求的时间。
+ 写入器节点负载的增加可能会延迟从写入器节点向只读副本传输数据的时间。

**操作**

如果只读副本或写入器节点受到 CPU 或网络带宽的限制，请考虑将其更改为具有更大 CPU 容量或更多网络带宽的实例类型。

### IPC:AuroraWriteForwardXactStart
<a name="apg-waits.ipc:aurorawriteforwardxactstart"></a>

当只读副本上的后端进程在等待转发开始事务命令的结果时，就会发生该 `IPC:AuroraWriteForwardXactStart` 事件。

**等待次数增加的可能原因**

等待次数增加的常见原因包括以下几点：
+ 只读副本和写入器节点之间的网络延迟增加会增加只读副本从写入器节点获得数据所花费的时间。
+ 只读副本的负载增加可能会延迟从只读副本向写入器节点传输查询请求的时间。
+ 写入器节点负载的增加可能会延迟从写入器节点向只读副本传输数据的时间。

**操作**

如果只读副本或写入器节点受到 CPU 或网络带宽的限制，请考虑将其更改为具有更大 CPU 容量或更多网络带宽的实例类型。