Client - ClientWrite
当 PostgreSQL 等待将数据写入客户端时,会发生 ClientWrite
事件。
客户端进程必须先读取从 PostgreSQL 数据库实例接收的所有数据,然后集群才能发送更多数据。集群在将更多数据发送给客户端之前等待的时间为 ClientWrite
事件。
PostgreSQL 数据库实例与客户端之间的网络吞吐量降低可能会导致此事件。客户端的 CPU 压力和网络饱和也可能导致此事件。CPU 压力是 CPU 被充分利用并且有任务等待 CPU 时间的时间。网络饱和是当数据库和客户端之间的网络传输的数据超出其处理能力之时。
ClientWrite
显示在主要等待中的常见原因包括以下各项:
-
网络延迟增加
PostgreSQL 数据库实例和客户端之间的网络延迟可能会增加。较高的网络延迟会增加客户端接收数据所需的时间。
-
客户端负载增加
客户端上可能存在 CPU 压力或网络饱和。客户端负载的增加会延迟从 PostgreSQL 数据库实例接收数据的过程。
-
发送到客户端的大量数据
PostgreSQL 数据库实例可能会向客户端发送大量数据。客户端可能无法像集群发送数据那样地快速接收数据。诸如大型表的副本之类的活动可能会导致
ClientWrite
事件增加。
根据等待事件的原因,我们建议采取不同的操作。
如果可能,请调整应用程序以减少 PostgreSQL 数据库实例发送给客户端的数据量。进行这样的调整可以减轻客户端上的 CPU 和网络争用。