You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 15集群大量查询等待MultiXactOffset相关锁问题求助

PostgreSQL 15集群突发性能异常排查求助

问题背景

我们的PostgreSQL 15集群今日突发性能暴跌,数据库服务器、客户端行为及软件均未做任何变更。集群主要流量来自Ruby库Sidekiq的数据处理客户端,由1台主节点和若干流式副本组成,运行在专用硬件(戴尔服务器,400GB内存、64核Intel Xeon、10块SSD硬件RAID)上。

通过select age(now(), query_start), * from pg_stat_activity order by query_start;查询活跃语句时发现,几乎所有查询突然开始等待MultiXactOffsetSLRU和MultiXactOffsetBuffer,导致数百个查询处于active状态堆积,数据处理几乎停滞,直到15分钟后触发statement_timeout超时。

观察到的现象

  • 问题仅针对数据库中的特定表cars;
  • 该表的所有类型查询均受影响,甚至是通常耗时<1ms的简单查询SELECT * FROM cars WHERE id = 123 LIMIT 1;
  • 问题发生时无VACUUM等后台操作运行;
  • 即使客户端吞吐量远低于日常正常处理水平,问题仍会出现;
  • 主节点和副本节点上查询该表均出现此问题,怀疑数据目录可能存在异常。

已尝试的操作

  • 重启连接客户端;
  • 重启PostgreSQL服务;
  • 重启服务器;
  • 执行PostgreSQL故障转移,确认问题并非特定服务器所致。

疑问

  1. 如何进一步调试排查该问题?
  2. MultiXactOffsetSLRU和MultiXactOffsetBuffer是什么含义?此前从未在wait_event中见过这些项。

pg_stat_activity示例

age              | 00:04:19.050777
datid            | 16391
datname          | production
pid              | 2797495
leader_pid       | 
usesysid         | 16392
usename          | au
application_name | sidekiq
client_addr      | 10.10.30.12
client_hostname  | 
client_port      | 50006
backend_start    | 2023-05-01 19:30:30.85287+00
xact_start       | 
query_start      | 2023-05-01 19:30:31.486781+00
state_change     | 2023-05-01 19:30:31.610657+00
wait_event_type  | LWLock
wait_event       | MultiXactOffsetSLRU
state            | active
backend_xid      | 
backend_xmin     | 
query_id         | 
query            | SELECT COUNT(*) FROM "cars" WHERE "cars"."id" = $1 LIMIT 1
backend_type     | client backend

问题发生时pg_activity工具截图

问题发生时的pg_activity截图

内容的提问来源于stack exchange,提问作者Niels Kristian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:22:34