选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 等待事件 / 客户端

WAIT EVENT · CLIENT客户端

ClientSslOpenServer

在尝试连接时等待SSL。

Waiting for SSL while attempting connection

客户端 引入 10 现存至 20 devel 1 次变动 实测触发图谱档案

类型
客户端
引入版本
10
版本状态
当前稳定版
覆盖版本
11 个 · 10 – 20
触发路径
实测触发
实测发行版
18.6
名称变动
曾用名 SSLOpenServer
手册章节
监控统计

PostgreSQL 18 手册 官方文档 源码 wait.pg.center

版本轨迹

相对 PostgreSQL 17 无变化。

各版本描述

相邻版本里类型、名称与英文描述都相同的合并成一段,旧的在前。中文取自图谱或本站手册译文,没有译文的只给英文原文。

  1. 1016

    ClientSSLOpenServer曾用名

    在尝试连接时等待SSL。

    Waiting for SSL while attempting connection.

  2. 1720

    ClientSslOpenServer

    在尝试连接时等待SSL。

    Waiting for SSL while attempting connection.

触发机制

WAIT_EVENT_SSL_OPEN_SERVER 位于 src/backend/libpq/be-secure-openssl.c:508,是经 grep 核验的报告路径。公共身份/资源映射位于 src/backend/utils/activity/wait_event.c:286。探针覆盖的操作是:尝试建立连接时等待 SSL。前端协议路径在套接字、TLS/GSS 或复制客户端操作即将阻塞前报告 SslOpenServer;PostgreSQL 正在等待远端或网络推进。

WAIT_EVENT_SSL_OPEN_SERVER at src/backend/libpq/be-secure-openssl.c:508 is the grep-verified reporting path. The public identity/resource is mapped at src/backend/utils/activity/wait_event.c:286. The instrumented operation is: Waiting for SSL while attempting connection. The frontend protocol path reports SslOpenServer immediately before a socket, TLS/GSS, or replication-client operation blocks. PostgreSQL is waiting for the remote side or network to progress.

通常正常

空闲状态的 ClientRead 通常只是连接池存量。

Idle ClientRead sessions are normal connection-pool inventory.

值得警惕

活动写入、握手、很老的 idle in transaction、连接耗尽或复制客户端停滞时需要调查。

Investigate active writes, handshakes, old idle-in-transaction sessions, connection exhaustion, or replication-client stalls.

诊断 SQL

直接在 psql 里跑;标注的是语句里用到的视图与列所要求的最低版本。

正在等待 Client/SslOpenServer 的会话Sessions waiting on Client/SslOpenServer

PG ≥ 13
SELECT pid, backend_type, usename, datname, application_name,
       state, now() - query_start AS query_age,
       now() - xact_start AS xact_age,
       wait_event_type, wait_event,
       pg_blocking_pids(pid) AS blocking_pids,
       left(query, 160) AS query
FROM pg_stat_activity
WHERE wait_event_type = 'Client'
  AND wait_event = 'SslOpenServer'
ORDER BY query_age DESC NULLS LAST;

当前 Client 等待分布Current Client cohort

PG ≥ 13
SELECT wait_event, count(*) AS waiting_sessions,
       count(*) FILTER (WHERE state = 'active') AS active_waiters,
       max(now() - query_start) AS oldest_query
FROM pg_stat_activity
WHERE wait_event_type = 'Client'
GROUP BY wait_event
ORDER BY waiting_sessions DESC, wait_event;

这些会话的锁与关系上下文Lock and relation context for these sessions

PG ≥ 13
SELECT a.pid, l.locktype, l.mode, l.granted, l.fastpath,
       d.datname, n.nspname, c.relname,
       l.page, l.tuple, l.virtualxid, l.transactionid,
       l.classid, l.objid, l.objsubid
FROM pg_stat_activity AS a
LEFT JOIN pg_locks AS l ON l.pid = a.pid
LEFT JOIN pg_database AS d ON d.oid = l.database
LEFT JOIN pg_class AS c
  ON c.oid = l.relation
 AND l.database = (
       SELECT oid FROM pg_database WHERE datname = current_database()
     )
LEFT JOIN pg_namespace AS n ON n.oid = c.relnamespace
WHERE a.wait_event_type = 'Client'
  AND a.wait_event = 'SslOpenServer'
ORDER BY a.pid, l.granted, l.locktype, l.mode;

处置步骤

  1. 先看 state 与事务年龄,再决定它是否算负载。
  2. 关联负责的应用、连接池与网络路径。
  3. 修复消费者背压或连接池策略,不要反复终止连接。
英文原文
  1. Check state and transaction age before counting the wait as load.
  2. Correlate with the owning application, pool, and network path.
  3. Fix consumer backpressure or pool policy rather than repeatedly terminating connections.

相关参数与指标

max_connectionsidle_in_transaction_session_timeout waiting_sessionswait_event_shareactive_backends

源码证据

图谱在各版本源码树里核对到的位置,新的在前。「触发点」是真正上报等待事件的调用处,「目录定义」只说明这个名字在枚举里存在。

PostgreSQL 18REL_18_6

PostgreSQL 16 · REL_16_15(2 处)

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的变动清单。

  1. PostgreSQL 17 ← 16 更名

    更名 SSLOpenServerSslOpenServer

    在尝试连接时等待SSL。

  2. PostgreSQL 10 ← 9.6 新增此事件

    该版起出现

    在尝试连接时等待SSL。

同类事件

事件 引入 版本变动 最近变动
CLIENT 客户端 9 个
ClientRead档案 10
等待从客户端读取数据。 现存
ClientWrite档案 10
等待向客户端写入数据。 现存
GssOpenServer档案 12 172 次
建立 GSSAPI 会话时,等待从客户端读取数据。曾用名 GSSOpenServer 现存
LibpqwalreceiverConnect档案 10 171 次
在 WAL receiver 中等待与远程服务器建立连接。曾用名 LibPQWalReceiverConnect 现存
LibpqwalreceiverReceive档案 10 171 次
在 WAL receiver 中等待从远程服务器接收数据。曾用名 LibPQWalReceiverReceive 现存
SslOpenServer档案 10 171 次
尝试建立连接时等待 SSL。曾用名 SSLOpenServer 现存
WaitForStandbyConfirmation档案 17
等待物理备库接收并刷写 WAL。 现存
WalSenderWaitForWal档案 10 171 次
在 WAL sender 进程中等待 WAL 完成刷写。曾用名 WalSenderWaitForWAL 现存
WalSenderWriteData档案 10
在 WAL sender 进程中处理 WAL receiver 的回复时,等待发生任何活动。 现存